关于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抓取京东商城手机列表url实例代码
Dec 18 Python
python抓取网页内容示例分享
Feb 24 Python
Python自动化测试工具Splinter简介和使用实例
May 13 Python
在Python中利用Pandas库处理大数据的简单介绍
Apr 07 Python
python实现根据ip地址反向查找主机名称的方法
Apr 29 Python
基于Python实现通过微信搜索功能查看谁把你删除了
Jan 27 Python
Python做简单的字符串匹配详解
Mar 21 Python
Django中的CBV和FBV示例介绍
Feb 25 Python
对numpy中轴与维度的理解
Apr 18 Python
Django组件cookie与session的具体使用
Jun 05 Python
pycharm 2019 最新激活方式(pycharm破解、激活)
Sep 22 Python
python中xlrd模块的使用详解
Feb 01 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
javascript,php获取函数参数对象的代码
2011/02/03 PHP
php中JSON的使用与转换
2015/01/14 PHP
PHP读取大文件的几种方法介绍
2016/10/27 PHP
Laravel等框架模型关联的可用性浅析
2019/12/15 PHP
js传值 判断
2006/10/26 Javascript
window.open()弹出居中的窗口
2007/02/01 Javascript
Javascript new关键字的玄机 以及其它
2010/08/25 Javascript
JavaScript实现QueryString获取GET参数的方法
2013/07/02 Javascript
Area 区域实现post提交数据的js写法
2014/04/22 Javascript
jquery实现的伪分页效果代码
2015/10/29 Javascript
jquery validate demo 基础
2015/10/29 Javascript
JS弹出层遮罩,隐藏背景页面滚动条细节优化分析
2016/04/29 Javascript
模拟javascript中的sort排序(简单实例)
2016/08/17 Javascript
node.js学习之交互式解释器REPL详解
2016/12/08 Javascript
iscroll动态加载数据完美解决方法
2017/07/18 Javascript
jQuery的时间datetime控件在AngularJs中的使用实例(分享)
2017/08/17 jQuery
vue实现的仿淘宝购物车功能详解
2019/01/27 Javascript
详解nodejs http请求相关总结
2019/03/31 NodeJs
JS模拟浏览器实现全局搜索功能
2019/09/11 Javascript
[51:22]Fnatic vs IG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
[01:25:38]DOTA2-DPC中国联赛 正赛 VG vs LBZS BO3 第一场 1月19日
2021/03/11 DOTA
Python验证码识别的方法
2015/07/10 Python
设计模式中的原型模式在Python程序中的应用示例
2016/03/02 Python
Python简单实现socket信息发送与监听功能示例
2018/01/03 Python
Python单向链表和双向链表原理与用法实例详解
2018/08/31 Python
python实现图片九宫格分割
2021/03/07 Python
Python实现CAN报文转换工具教程
2020/05/05 Python
Python学习之os模块及用法
2020/06/03 Python
Python configparser模块应用过程解析
2020/08/14 Python
编写类String 的构造函数、析构函数和赋值函数
2012/09/09 面试题
班长岗位职责
2013/11/10 职场文书
党章培训心得体会
2014/09/04 职场文书
2015年市场营销工作总结
2015/07/23 职场文书
生产车间管理制度
2015/08/04 职场文书
信息技术课教学反思
2016/02/23 职场文书
淡雅古典唯美少女娇媚宁静迷人写真
2022/03/21 杂记