怎么解决Tkinter中button按钮未按却主动执行command函数
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,本文小编为大家详细介绍"怎么解决Tkinter中button按钮未按却主动执行command函数",内容详细,步骤清晰,细节处理妥当,希望这篇"怎么解决Tkinter中button按钮未按却主动执行c
千家信息网最后更新 2025年11月07日怎么解决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安全错误
数据库的锁怎样保障安全
IT培训班还开数据库
半推半就视频软件开发
苹果怎么添加数据库
数据库怎么进行库存管理
江苏个人软件开发售后服务
同仁软件开发公司
linux自动校准服务器时间
黑苹果搞软件开发
浙江才神网络技术
博兴陶瓷软件开发
ZZDBASE创建数据库
制作vpn服务器
网络安全管理管理方法论
删除整个数据库表的sql语句
仙居本地软件开发生产过程
软件开发区部队当技术兵
sql2019怎么添加数据库
软件开发大学都有哪些
公司代理服务器地址
如何经营一个软件开发公司
道琼斯数据库多久更新一次
EV平台中可检索的数据库
汽车网络安全市场收入
学网络安全赚钱吗
浦东新区什么是软件开发学习
湖南党员教育软件开发系统
联想服务器t350
数据仓储是数据库吗
网络安全认证证书
荒野行动版本服务器