关于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 相关文章推荐
使用python3.5仿微软记事本notepad
Jun 15 Python
Python爬虫之模拟知乎登录的方法教程
May 25 Python
Python爬虫之xlml解析库(全面了解)
Aug 08 Python
Numpy array数据的增、删、改、查实例
Jun 04 Python
python爬虫基础教程:requests库(二)代码实例
Apr 09 Python
python安装本地whl的实例步骤
Oct 12 Python
python自动生成model文件过程详解
Nov 02 Python
tensorflow 自定义损失函数示例代码
Feb 05 Python
快速查找Python安装路径方法
Feb 06 Python
如何在Django中使用聚合的实现示例
Mar 23 Python
python:HDF和CSV存储优劣对比分析
Jun 08 Python
python GUI计算器的实现
Oct 09 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
复杂检索数据并分页显示的处理方法
2006/10/09 PHP
开启CURL扩展,让服务器支持PHP curl函数(远程采集)
2011/03/19 PHP
yii的CURD操作实例详解
2014/12/04 PHP
PHP程序员不应该忽略的3点
2015/10/09 PHP
Yii2 中实现单点登录的方法
2018/03/09 PHP
JavaScript的Function详细
2006/11/14 Javascript
jquery(live)中File input的change方法只起一次作用的解决办法
2011/10/21 Javascript
eval的两组性能测试数据
2012/08/17 Javascript
Three.js源码阅读笔记(基础的核心Core对象)
2012/12/27 Javascript
使用javascript过滤html的字符串(注释标记法)
2013/07/08 Javascript
在页面中js获取光标/鼠标的坐标及光标的像素坐标
2013/11/11 Javascript
javasciprt下jquery函数$.post执行无响应的解决方法
2014/03/13 Javascript
clipboard.js无需Flash无需依赖任何JS库实现文本复制与剪切
2015/10/10 Javascript
js时间戳转为日期格式的方法
2015/12/28 Javascript
在点击div中的p时,如何阻止事件冒泡
2017/02/07 Javascript
js从输入框读取内容,比较两个数字的大小方法
2017/03/13 Javascript
vue-router实现编程式导航的代码实例
2019/01/19 Javascript
详解vue中this.$emit()的返回值是什么
2019/04/07 Javascript
详解搭建一个vue-cli的移动端H5开发模板
2020/01/17 Javascript
通过js随机函数Math.random实现乱序
2020/05/19 Javascript
vue Treeselect 树形下拉框:获取选中节点的ids和lables操作
2020/08/15 Javascript
python 字典 setdefault()和get()方法比较详解
2019/08/07 Python
Selenium之模拟登录铁路12306的示例代码
2020/07/31 Python
CSS3转换功能transform主要属性值分析及实现分享
2012/05/06 HTML / CSS
18-35岁旅游团的全球领导者:Contiki
2017/02/08 全球购物
加拿大领先的牛仔零售商:Bluenotes
2018/01/22 全球购物
Java面试题:请问一下代码输出是什么
2015/05/27 面试题
HR喜欢的自荐信格式
2013/10/08 职场文书
应届生法律求职信
2013/10/22 职场文书
一分钟演讲稿
2014/04/30 职场文书
小学爱国卫生月活动总结
2014/06/30 职场文书
暑期培训班策划方案
2014/08/26 职场文书
检讨书格式
2015/01/23 职场文书
学校财务管理制度
2015/08/04 职场文书
小学思想品德教学反思
2016/02/24 职场文书
某药房的新员工入职告知书!
2019/07/15 职场文书