关于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 字典(dict)遍历的四种方法性能测试报告
Jun 25 Python
Python Web框架Flask下网站开发入门实例
Feb 08 Python
Python3里的super()和__class__使用介绍
Apr 23 Python
python获取本机mac地址和ip地址的方法
Apr 29 Python
Python文件读写保存操作的示例代码
Sep 14 Python
python面向对象入门教程之从代码复用开始(一)
Dec 11 Python
python如何以表格形式打印输出的方法示例
Jun 21 Python
使用pyplot.matshow()函数添加绘图标题
Jun 16 Python
在Python中字典按值排序的实现方法
Nov 12 Python
Python从文件中读取数据的方法步骤
Nov 18 Python
分享一枚pycharm激活码适用所有pycharm版本我的pycharm2020.2.3激活成功
Nov 20 Python
pandas中DataFrame数据合并连接(merge、join、concat)
May 30 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
Mysql数据库操作类( 1127版,提供源码下载 )
2010/12/02 PHP
PHP将DateTime对象转化为友好时间显示的实现代码
2011/09/20 PHP
PHP常用函数和常见疑难问题解答
2014/03/05 PHP
php实现简单爬虫的开发
2016/03/28 PHP
PHP Callable强制指定回调类型的方法
2016/08/30 PHP
利用javascript移动div层-javascript 拖动层
2009/03/22 Javascript
javascript面向对象之二 命名空间
2011/02/08 Javascript
jquery 与NVelocity 产生冲突的解决方法
2011/06/13 Javascript
jquery实现键盘左右翻页特效
2015/04/30 Javascript
VC调用javascript的几种方法(推荐)
2016/08/09 Javascript
Vue响应式添加、修改数组和对象的值
2017/03/20 Javascript
微信小程序使用progress组件实现显示进度功能【附源码下载】
2017/12/12 Javascript
简单介绍react redux的中间件的使用
2018/04/06 Javascript
Vue2.0 实现歌手列表滚动及右侧快速入口功能
2018/08/08 Javascript
深入理解Vue.js轻量高效的前端组件化方案
2018/12/10 Javascript
antd Select下拉菜单动态添加option里的内容操作
2020/11/02 Javascript
[42:32]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.27
2020/12/01 DOTA
Python win32com 操作Exce的l简单方法(必看)
2017/05/25 Python
Django框架实现的普通登录案例【使用POST方法】
2019/05/15 Python
Django中提示消息messages的设置方式
2019/11/15 Python
python多进程重复加载的解决方式
2019/12/13 Python
Python利用PyPDF2库获取PDF文件总页码实例
2020/04/03 Python
在python中使用pyspark读写Hive数据操作
2020/06/06 Python
使用jTopo给Html5 Canva中绘制的元素添加鼠标事件
2014/05/15 HTML / CSS
英国办公家具网站:Furniture At Work
2019/10/07 全球购物
建筑自我鉴定
2013/10/19 职场文书
委托证明的格式
2014/01/10 职场文书
公司企业表扬信
2014/01/11 职场文书
银行职员个人的工作自我评价
2014/02/15 职场文书
煤矿安全生产责任书
2014/04/15 职场文书
安全责任协议书
2014/04/21 职场文书
党性观念心得体会
2014/09/03 职场文书
党支部工作总结2015
2015/04/01 职场文书
2016入党培训心得体会范文
2016/01/08 职场文书
师德培训心得体会2016
2016/01/09 职场文书
vue实现可以快进后退的跑马灯组件
2022/04/08 Vue.js