解决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读写txt文本文件的操作方法全解析
Jun 26 Python
Python实现识别手写数字 简易图片存储管理系统
Jan 29 Python
解决python升级引起的pip执行错误的问题
Jun 12 Python
在PyCharm下使用 ipython 交互式编程的方法
Jan 17 Python
Python文件打开方式实例详解【a、a+、r+、w+区别】
Mar 30 Python
python3.6下Numpy库下载与安装图文教程
Apr 02 Python
python将字典列表导出为Excel文件的方法
Sep 02 Python
python随机模块random的22种函数(小结)
May 15 Python
浅谈对python中if、elif、else的误解
Aug 20 Python
python反扒机制的5种解决方法
Feb 06 Python
用gpu训练好的神经网络,用tensorflow-cpu跑出错的原因及解决方案
Mar 03 Python
python运行脚本文件的三种方法实例
Jun 25 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和ACCESS写聊天室(五)
2006/10/09 PHP
php 3行代码的分页算法(求起始页和结束页)
2009/10/21 PHP
php addslashes及其他清除空格的方法是不安全的
2012/01/25 PHP
PHP中JSON的应用技巧
2015/10/10 PHP
php提交表单时保留多个空格及换行的文本样式的方法
2017/06/20 PHP
PHP命名空间定义与用法实例分析
2019/08/14 PHP
jquery简单体验
2007/01/10 Javascript
JavaScript去掉空格的方法集合
2010/12/28 Javascript
jQuery设置与获取HTML,文本和值的简单实例
2014/02/26 Javascript
JavaScript 七大技巧(二)
2015/12/13 Javascript
详谈angularjs中路由页面强制更新的问题
2017/04/24 Javascript
javaScript动态添加Li元素的实例
2018/02/24 Javascript
Vue SSR 组件加载问题
2018/05/02 Javascript
angularjs性能优化的方法
2018/09/05 Javascript
深入koa-bodyparser原理解析
2019/01/16 Javascript
简述vue-cli中chainWebpack的使用方法
2019/07/30 Javascript
浅谈Vue中render中的h箭头函数
2019/11/07 Javascript
ckeditor一键排版功能实现方法分析
2020/02/06 Javascript
JS删除数组指定值常用方法详解
2020/06/04 Javascript
nginx配置域名后的二级目录访问不同项目的配置操作
2020/11/06 Javascript
[01:08:48]LGD vs OG 2018国际邀请赛淘汰赛BO3 第三场 8.25
2018/08/29 DOTA
Python实现二维曲线拟合的方法
2018/12/29 Python
python实现的读取网页并分词功能示例
2019/10/29 Python
PYcharm 激活方法(推荐)
2020/03/23 Python
python安装sklearn模块的方法详解
2020/11/28 Python
使用CSS媒体查询(Media Queries)和JavaScript判断浏览器设备类型的方法
2014/04/03 HTML / CSS
丽笙酒店官方网站:Radisson Hotels
2019/05/07 全球购物
Opodo意大利:欧洲市场上领先的在线旅行社
2019/10/24 全球购物
设计模式的基本要素是什么
2014/04/21 面试题
通信工程专业女生个人求职信
2013/09/21 职场文书
班组长工作职责
2013/12/25 职场文书
食堂采购员岗位职责
2014/03/17 职场文书
结婚通知短信大全
2015/04/17 职场文书
病房管理制度范本
2015/08/06 职场文书
计算机教师工作总结
2015/08/13 职场文书
唤醒紫霞仙子,携手再游三界!大话手游X《大话西游》电影合作专属剧情任务
2022/04/03 其他游戏