关于Python Tkinter Button控件command传参问题的解决方式


Posted in Python onMarch 04, 2020

环境:Ubuntu14、Python3.4、Pycharm2018

一、使用command=lambda: 的形式传参

代码如下

from tkinter import *
import tkinter.messagebox as messagebox


def createpage(master):
  master = Frame(root)
  master.pack()
  Label(master, text='num1').grid(row=0, column=0, stick=W, pady=10)
  e1 = Entry(master)
  e1.grid(row=0, column=1, stick=E)
  Label(master, text='num2').grid(row=1, column=0, stick=W, pady=10)
  e2 = Entry(master)
  e2.grid(row=1, column=1, stick=E)
  # Button传递参数
  Button(
    master, text='加', command=lambda: btn_def(e1.get(), e2.get())
  ).grid(row=2, column=0, stick=W)
  Button(master, text='减').grid(row=2, column=1, stick=E)
  Label(master, text='说明').grid(row=3, column=0, stick=W, pady=10)
  Label(master, text='只写了加法(请输入简单数字测试button传参)').grid(
    row=3, column=1, stick=E
  )

def btn_def(num1, num2):
  num = int(num1) + int(num2)
  messagebox.showinfo('结果', '%d' % num)

if __name__ == '__main__':
  root = Tk()
  root.title('Demo')
  root.geometry('400x150')
  createpage(root)
  root.mainloop()

二、使用StringVar()和Entry textvariable对参数进行绑定

代码如下

from tkinter import *
import tkinter.messagebox as messagebox

class A:
  """
  使用StringVar() 和 textvariable
  对Button进行绑定
  实现Button对数据进行操作
  解决Button传参问题
  StringVar()的数需要使用.get()获取值
  """
  def __init__(self, master):
    self.root = Frame(master)
    self.num1 = StringVar() # 第一个数字
    self.num2 = StringVar() # 第一个数字
    self.createpage()

  def createpage(self):
    self.root.pack()
    Label(self.root, text='num1').grid(row=0, column=0, stick=W, pady=10)
    # textvariable和StringVar的num1绑定
    Entry(self.root, textvariable=self.num1).grid(row=0, column=1, stick=E)
    Label(self.root, text='num2').grid(row=1, column=0, stick=W, pady=10)
    # textvariable和StringVar的num2绑定
    Entry(self.root, textvariable=self.num2).grid(row=1, column=1, stick=E)
    # Button传递参数
    Button(
      self.root, text='加', command=self.btn_def
    ).grid(row=2, column=0, stick=W)
    Button(self.root, text='减').grid(row=2, column=1, stick=E)
    Label(self.root, text='说明').grid(row=3, column=0, stick=W, pady=10)
    Label(self.root, text='只写了加法(请输入简单数字测试button传参)').grid(
      row=3, column=1, stick=E
    )

  def btn_def(self):
    # 使用.get()获取值
    num = int(self.num1.get()) + int(self.num2.get())
    messagebox.showinfo('结果', '%d' % num)

if __name__ == '__main__':
  root = Tk()
  root.title('Demo2')
  root.geometry('400x150')
  A(root)
  root.mainloop()

三、总结

以上两种方式都是使用了Button进行数据事件处理,方法一为Button command下传递参数,方法二为控件下使用textvariable对StringVar的参数进行绑定。(我比较推荐使用方法二)。好了,今天就说到这吧,希望大家多多支持三水点靠木!

Python 相关文章推荐
使用Python脚本操作MongoDB的教程
Apr 16 Python
Python xlrd读取excel日期类型的2种方法
Apr 28 Python
python实现的多线程端口扫描功能示例
Jan 21 Python
高效使用Python字典的清单
Apr 04 Python
使用Python通过win32 COM实现Word文档的写入与保存方法
May 08 Python
python 多线程重启方法
Feb 18 Python
Python3.6实现带有简单界面的有道翻译小程序
Apr 16 Python
python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)
Aug 06 Python
Python学习笔记之字符串和字符串方法实例详解
Aug 22 Python
Python 读取用户指令和格式化打印实现解析
Sep 02 Python
python 爬虫爬取京东ps4售卖情况
Dec 18 Python
Python Socket编程详解
Apr 25 Python
在python tkinter界面中添加按钮的实例
Mar 04 #Python
Python tkinter布局与按钮间距设置方式
Mar 04 #Python
python 按钮点击关闭窗口的实现
Mar 04 #Python
Tkinter中复选菜单是否被选中的判断与设置方式
Mar 04 #Python
python虚拟环境模块venv使用及示例
Mar 04 #Python
Python类的绑定方法和非绑定方法实例解析
Mar 04 #Python
python字符串常用方法及文件简单读写的操作方法
Mar 04 #Python
You might like
完美解决dedecms中的[html][/html]和[code][/code]问题
2007/03/20 PHP
php 数组处理函数extract详解及实例代码
2016/11/23 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
2019/10/03 PHP
对laravel的session获取与存取方法详解
2019/10/08 PHP
javascript重写alert方法的实例代码
2013/03/29 Javascript
解决extjs grid 不随窗口大小自适应的改变问题
2014/01/26 Javascript
javascript if条件判断方法小结
2014/05/17 Javascript
jQuery使用元素属性attr赋值详解
2015/02/27 Javascript
JavaScript过滤字符串中的中文与空格方法汇总
2016/03/07 Javascript
JS生成某个范围的随机数【四种情况详解】
2016/04/20 Javascript
基于BootStrap Metronic开发框架经验小结【一】框架总览及菜单模块的处理
2016/05/12 Javascript
[原创]javascript typeof id==='string'?document.getElementById(id):id解释
2016/11/02 Javascript
vue将对象新增的属性添加到检测序列的方法
2018/02/24 Javascript
原来JS还可以这样拆箱转换详解
2019/02/01 Javascript
[00:35]2016完美“圣”典风云人物:冷冷宣传片
2016/12/08 DOTA
centos下更新Python版本的步骤
2013/02/12 Python
Python实现的石头剪子布代码分享
2014/08/22 Python
python使用append合并两个数组的方法
2015/04/28 Python
PyQt5每天必学之创建窗口居中效果
2018/04/19 Python
浅谈python之高阶函数和匿名函数
2019/03/21 Python
numpy中的ndarray方法和属性详解
2019/05/27 Python
django框架自定义模板标签(template tag)操作示例
2019/06/24 Python
python 图片去噪的方法示例
2019/07/09 Python
python卸载后再次安装遇到的问题解决
2019/07/10 Python
PyQT5 实现快捷键复制表格数据的方法示例
2020/06/19 Python
PyTorch的torch.cat用法
2020/06/28 Python
python 实现控制鼠标键盘
2020/11/27 Python
HTML5 Convas APIs方法详解
2015/04/24 HTML / CSS
Yahoo-PHP面试题3
2012/01/14 面试题
发展部经理职责规定
2014/02/22 职场文书
机械专业求职信
2014/05/25 职场文书
社区助残日活动总结
2014/08/29 职场文书
工艺技术员岗位职责
2015/02/04 职场文书
遗愿清单观后感
2015/06/09 职场文书
2015年“我们的节日·中秋节”活动总结
2015/07/30 职场文书
golang生成并解析JSON
2022/04/14 Golang