千家信息网

怎么解决Tkinter中button按钮未按却主动执行command函数

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本文小编为大家详细介绍"怎么解决Tkinter中button按钮未按却主动执行command函数",内容详细,步骤清晰,细节处理妥当,希望这篇"怎么解决Tkinter中button按钮未按却主动执行c
千家信息网最后更新 2026年11月01日怎么解决Tkinter中button按钮未按却主动执行command函数

本文小编为大家详细介绍"怎么解决Tkinter中button按钮未按却主动执行command函数",内容详细,步骤清晰,细节处理妥当,希望这篇"怎么解决Tkinter中button按钮未按却主动执行command函数"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

前言

在使用Tkinter做界面时,遇到这样一个问题:

程序刚运行,尚未按下按钮,但按钮的响应函数却已经运行了

例如下面的程序:

from Tkinter import *class App: def __init__(self,master):  frame = Frame(master)  frame.pack()  Button(frame,text='1', command = self.click_button(1)).grid(row=0,column=0)  Button(frame,text='2', command = self.click_button(2)).grid(row=0,column=1)  Button(frame,text='3', command = self.click_button(1)).grid(row=0,column=2)  Button(frame,text='4', command = self.click_button(2)).grid(row=1,column=0)  Button(frame,text='5', command = self.click_button(1)).grid(row=1,column=1)  Button(frame,text='6', command = self.click_button(2)).grid(row=1,column=2) def click_button(self,n):  print 'you clicked :',n  root=Tk()app=App(root)root.mainloop()

程序刚一运行,就出现下面情况:

六个按钮都没有按下,但是command函数却已经运行了

后来通过网上查找,发现问题原因是command函数带有参数造成的

tkinter要求由按钮(或者其它的插件)触发的控制器函数不能含有参数

若要给函数传递参数,需要在函数前添加lambda。

原程序可改为:

from Tkinter import *class App: def __init__(self,master):  frame = Frame(master)  frame.pack()  Button(frame,text='1', command = lambda: self.click_button(1)).grid(row=0,column=0)  Button(frame,text='2', command = lambda: self.click_button(2)).grid(row=0,column=1)  Button(frame,text='3', command = lambda: self.click_button(1)).grid(row=0,column=2)  Button(frame,text='4', command = lambda: self.click_button(2)).grid(row=1,column=0)  Button(frame,text='5', command = lambda: self.click_button(1)).grid(row=1,column=1)  Button(frame,text='6', command = lambda: self.click_button(2)).grid(row=1,column=2) def click_button(self,n):  print 'you clicked :',n  root=Tk()app=App(root)root.mainloop()

补充:Tkinter Button按钮组件调用一个传入参数的函数

这里我们要使用python的lambda函数,lambda是创建一个匿名函数,冒号前是传入参数,后面是一个处理传入参数的单行表达式。

调用lambda函数返回表达式的结果。

首先让我们创建一个函数fun(x):

def fun(x):    print x

随后让我们创建一个Button:(这里省略了调用Tkinter的一系列代码,只写重要部分)

Button(root, text='Button', command=lambda :fun(x))

下面让我们创建一个变量x=1:

x = 1

最后点击这个Button,就会打印出 1了。

读到这里,这篇"怎么解决Tkinter中button按钮未按却主动执行command函数"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。

函数 按钮 参数 程序 运行 主动 文章 内容 表达式 问题 处理 妥当 重要 代码 冒号 前言 原因 变量 尚未 思路 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网金融科技 万易互联网科技 互联网科技视频 互联网科技公司有哪些 多迪互联网科技有限公司 丰台科技园 互联网公司 成都互联网科技公司100强 顶级互联网科技成果有哪些 栖莱科技互联网股份有限公司 互联网科技公司实习生 国大互联网教育科技有限公司工作 东莞新华互联网科技学校 互联网科技的全部知识 科技互联网海报 广州富喜互联网络科技 广东鹅鹅鹅互联网科技有限公司 悟空问答互联网科技 优雇互联网科技有限公司 前海云享互联网科技 每日互联网科技新闻 手冲咖啡和咖啡机区别 深圳九邦互联网科技有限公司 互联网科技宣传片 甘肃拓世互联网科技有限公司 上海电发互联网科技有限公司 团飞科技与伯堂互联网服务平台 互联网时代科技改变生活 恒生互联网科技业指数调整周期 易租星互联网科技有限公司 第三届互联网大会安防黑科技
0