怎么解决Tkinter中button按钮未按却主动执行command函数
发表于:2024-10-28 作者:千家信息网编辑
千家信息网最后更新 2024年10月28日,本文小编为大家详细介绍"怎么解决Tkinter中button按钮未按却主动执行command函数",内容详细,步骤清晰,细节处理妥当,希望这篇"怎么解决Tkinter中button按钮未按却主动执行c
千家信息网最后更新 2024年10月28日怎么解决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安全错误
数据库的锁怎样保障安全
金融软件开发特点
数据服务器安全
网络安全风险隐患登记表
网络安全班会策划书模板
网络安全顶尖论文
在数据库中存储时
互联网公司的数据库安全运维
网络安全协议 握手
襄阳手机软件开发
软件开发合同范本标题
河北信息化软件开发定制价格
运城网络技术怎么样
巴中市网络安全教育专题讲座
数据库三要素是
简阳网络安全培训
服务器多显卡
广东服务器机柜推荐
鹏鹏网络技术服务
电脑服务器POP端口在哪里查
app软件开发咨询
管理服务器连接不上去
网络安全八等级
为什么不做软件开发做实施
徐州助力智慧消防软件开发
互联网公司的数据库安全运维
济南玖卡网络技术有限公司
网络安全系统怎么打开
阿里云服务器数据备份规定
电脑网络安全管理模式
智能社区软件开发功能点估算