关于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中实现数组和列表读取一列的方法
Apr 03 Python
python 借助numpy保存数据为csv格式的实现方法
Jul 04 Python
Python中实现单例模式的n种方式和原理
Nov 14 Python
在Python中调用Ping命令,批量IP的方法
Jan 26 Python
react+django清除浏览器缓存的几种方法小结
Jul 17 Python
Python爬虫爬取Bilibili弹幕过程解析
Oct 10 Python
python实现删除列表中某个元素的3种方法
Jan 15 Python
python中JWT用户认证的实现
May 18 Python
Python Flask框架实现简单加法工具过程解析
Jun 03 Python
cookies应对python反爬虫知识点详解
Nov 25 Python
python爬虫中的url下载器用法详解
Nov 30 Python
Python的信号库Blinker用法详解
Dec 31 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
追忆往昔!浅谈收音机的百年发展历史
2021/03/01 无线电
php 图片加水印与上传图片加水印php类
2010/05/12 PHP
php 生成文字png图片的代码
2011/04/17 PHP
PHP魔术方法以及关于独立实例与相连实例的全面讲解
2016/10/18 PHP
JQuery动态创建DOM、表单元素的实现代码
2011/08/09 Javascript
range 标准化之获取
2011/08/28 Javascript
一个关于jqGrid使用的小例子(行按钮)
2011/11/04 Javascript
js自动生成的元素与页面原有元素发生堆叠的解决方法
2013/10/24 Javascript
JS获取iframe中marginHeight和marginWidth属性的方法
2015/04/01 Javascript
详解JavaScript中数组的相关知识
2015/07/29 Javascript
js鼠标点击图片切换效果代码分享
2015/08/26 Javascript
总结JavaScript的正则与其他语言的不同之处
2016/08/25 Javascript
微信小程序 WebSocket详解及应用
2017/01/21 Javascript
js实现登录框鼠标拖拽效果
2017/03/09 Javascript
利用js查找数组中指定元素并返回该元素的所有索引示例
2017/03/29 Javascript
ejsExcel模板在Vue.js项目中的实际运用
2018/01/27 Javascript
详解JS数值Number类型
2018/02/07 Javascript
vue+node实现图片上传及预览的示例方法
2018/11/22 Javascript
Vue CLI4 Vue.config.js标准配置(最全注释)
2020/06/05 Javascript
jquery实现点击左右按钮切换图片
2021/01/27 jQuery
[02:40]DOTA2超级联赛专访430 从小就爱玩对抗性游戏
2013/06/18 DOTA
python模拟事件触发机制详解
2018/01/19 Python
python 巧用正则寻找字符串中的特定字符的位置方法
2018/05/02 Python
python频繁写入文件时提速的方法
2019/06/26 Python
python实现代码统计器
2019/09/19 Python
python读取当前目录下的CSV文件数据
2020/03/11 Python
struct与class的区别
2014/02/03 面试题
学生党员思想汇报范文
2014/01/09 职场文书
一年级班主任寄语
2014/01/19 职场文书
简历里的自我评价范文
2014/02/24 职场文书
自查自纠工作总结
2014/10/15 职场文书
2014年酒店工作总结与计划
2014/11/17 职场文书
2019年怎样写好导游词?
2019/07/02 职场文书
Python中非常使用的6种基本变量的操作与技巧
2022/03/22 Python
PHP正则表达式之RCEService回溯
2022/04/11 PHP
win sever 2022如何占用操作主机角色
2022/06/25 Servers