关于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中使用urllib2获取http请求状态码的代码例子
Jul 07 Python
Python中的匿名函数使用简介
Apr 27 Python
Python中属性和描述符的正确使用
Aug 23 Python
Python编程实现及时获取新邮件的方法示例
Aug 10 Python
Python自定义简单图轴简单实例
Jan 08 Python
Python使用smtp和pop简单收发邮件完整实例
Jan 09 Python
对python中的iter()函数与next()函数详解
Oct 18 Python
Python学习笔记之视频人脸检测识别实例教程
Mar 06 Python
Python实现蒙特卡洛算法小实验过程详解
Jul 12 Python
tensorflow实现测试时读取任意指定的check point的网络参数
Jan 21 Python
python字符串拼接+和join的区别详解
Dec 03 Python
Python中X[:,0]和X[:,1]的用法
May 10 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
PHP用SAX解析XML的实现代码与问题分析
2011/08/22 PHP
Netbeans 8.2将支持PHP7 更精彩
2016/06/13 PHP
php实现压缩合并js的方法【附demo源码下载】
2016/09/22 PHP
php7安装yar扩展的方法详解
2017/08/03 PHP
基于jQuery的左右滚动实现代码
2010/12/03 Javascript
让checkbox不选中即将选中的checkbox不选中
2014/07/11 Javascript
ajax如何实现页面局部跳转与结果返回
2015/08/24 Javascript
微信企业号开发之微信考勤Cookies的使用
2015/09/11 Javascript
js全选按钮的实现方法
2015/11/17 Javascript
对js中回调函数的一些看法
2016/08/29 Javascript
JS代码实现百度地图 画圆 删除标注
2016/10/12 Javascript
Bootstrap优化站点资源、响应式图片、传送带使用详解3
2016/10/14 Javascript
Javascript 数组去重的方法(四种)详解及实例代码
2016/11/24 Javascript
bootstrapValidator 重新启用提交按钮的方法
2017/02/20 Javascript
JavaScrip关于创建常量的知识点
2017/12/07 Javascript
[03:45]Newbee战队出征西雅图 决战2016国际邀请赛
2016/08/02 DOTA
使用rst2pdf实现将sphinx生成PDF
2016/06/07 Python
Python协程的用法和例子详解
2017/09/09 Python
python按综合、销量排序抓取100页的淘宝商品列表信息
2018/02/24 Python
详解python中的json和字典dict
2018/06/22 Python
在Pandas中给多层索引降级的方法
2018/11/16 Python
NumPy 基本切片和索引的具体使用方法
2019/04/24 Python
ipad上运行python的方法步骤
2019/10/12 Python
Jupyter notebook命令和编辑模式常用快捷键汇总
2020/11/17 Python
python中entry用法讲解
2020/12/04 Python
巴黎欧莱雅法国官网:L’Oreal Paris
2019/04/30 全球购物
俄罗斯隐形眼镜和眼镜在线商店:Cronos
2020/06/02 全球购物
J2EE是技术还是平台还是框架
2016/08/14 面试题
法学专业毕业生自荐信
2014/06/11 职场文书
家具公司总经理岗位职责
2014/07/08 职场文书
2015元旦标语横幅
2014/12/09 职场文书
运动会1000米加油稿
2015/07/21 职场文书
学校财务管理制度
2015/08/04 职场文书
教师节作文之小学四年级
2019/09/03 职场文书
Elasticsearch 索引操作和增删改查
2022/04/19 Python
java开发双人五子棋游戏
2022/05/06 Java/Android