解决Tkinter中button按钮未按却主动执行command函数的问题


Posted in Python onMay 23, 2021

在使用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()

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

解决Tkinter中button按钮未按却主动执行command函数的问题

六个按钮都没有按下,但是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了。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 文件重命名工具代码
Jul 26 Python
怎样使用Python脚本日志功能
Aug 14 Python
对python使用http、https代理的实例讲解
May 07 Python
PyTorch CNN实战之MNIST手写数字识别示例
May 29 Python
nohup后台启动Python脚本,log不刷新的解决方法
Jan 14 Python
python3实现表白神器
Apr 09 Python
flask框架jinja2模板与模板继承实例分析
Aug 01 Python
利用python实现AR教程
Nov 20 Python
tensorboard显示空白的解决
Feb 15 Python
Python批量删除mysql中千万级大量数据的脚本分享
Dec 03 Python
七个非常实用的Python工具包总结
Jun 15 Python
Python中 range | np.arange | np.linspace三者的区别
Mar 22 Python
python tkinter Entry控件的焦点移动操作
May 22 #Python
python3.7.2 tkinter entry框限定输入数字的操作
May 22 #Python
tensorboard 可视化之localhost:6006不显示的解决方案
pytorch训练神经网络爆内存的解决方案
粗暴解决CUDA out of memory的问题
May 22 #Python
pytorch中的model.eval()和BN层的使用
May 22 #Python
解决Pytorch中关于model.eval的问题
You might like
PHP获取毫秒级时间戳的方法
2015/04/15 PHP
PHP各种异常和错误的拦截方法及发生致命错误时进行报警
2016/01/19 PHP
JQuery读取XML文件数据并显示的实现代码
2009/12/16 Javascript
jQuery '行 4954 错误: 不支持该属性或方法' 的问题解决方法
2011/01/19 Javascript
JS基础之undefined与null的区别分析
2011/08/08 Javascript
jquery连缀语法如何实现
2012/11/29 Javascript
详解javascript数组去重问题
2015/11/06 Javascript
node.js插件nodeclipse安装图文教程
2020/10/19 Javascript
Javascript Event(事件)的传播与冒泡
2017/01/23 Javascript
jQuery插件HighCharts实现的2D面积图效果示例【附demo源码下载】
2017/03/15 Javascript
nodejs6下使用koa2框架实例
2017/05/18 NodeJs
jQuery实现切换隐藏与显示同时切换图标功能
2017/10/29 jQuery
常用的9个JavaScript图表库详解
2017/12/19 Javascript
mpvue中配置vuex并持久化到本地Storage图文教程解析
2018/03/15 Javascript
JS实现快递单打印功能【推荐】
2018/06/21 Javascript
对Vue2 自定义全局指令Vue.directive和指令的生命周期介绍
2018/08/30 Javascript
layui table设置某一行的字体颜色方法
2019/09/05 Javascript
Vue.js 无限滚动列表性能优化方案
2019/12/02 Javascript
Python中的错误和异常处理简单操作示例【try-except用法】
2017/07/25 Python
浅谈使用Python变量时要避免的3个错误
2017/10/30 Python
Python有序查找算法之二分法实例分析
2017/12/11 Python
Python决策树和随机森林算法实例详解
2018/01/30 Python
对Tensorflow中的矩阵运算函数详解
2018/07/27 Python
在python里协程使用同步锁Lock的实例
2019/02/19 Python
python range实例用法分享
2020/02/06 Python
Anaconda的安装与虚拟环境建立
2020/11/18 Python
html5新特性与用法大全
2018/09/13 HTML / CSS
关于HTML5的22个初级技巧(图文教程)
2012/06/21 HTML / CSS
Guess欧洲官网:美国服饰品牌
2019/08/06 全球购物
阿拉伯时尚购物网站:Nisnass
2021/02/07 全球购物
师范生教师实习自我鉴定
2013/09/27 职场文书
2014年新教师工作总结
2014/11/08 职场文书
七年级上册生物的课件
2019/08/07 职场文书
晶体管单管来复再生式收音机
2021/04/22 无线电
Python基础之进程详解
2021/05/21 Python
IDEA使用SpringAssistant插件创建SpringCloud项目
2021/06/23 Java/Android