关于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脚本操作文件的小示例分享
Aug 27 Python
python3使用urllib模块制作网络爬虫
Apr 08 Python
Pyhton中单行和多行注释的使用方法及规范
Oct 11 Python
Python网络编程详解
Oct 31 Python
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
Jan 07 Python
Python使用pandas和xlsxwriter读写xlsx文件的方法示例
Apr 09 Python
Python常用库大全及简要说明
Jan 17 Python
关于windows下Tensorflow和pytorch安装教程
Feb 04 Python
python网络编程之五子棋游戏
May 14 Python
Python random模块的使用示例
Oct 10 Python
windows安装python超详细图文教程
May 21 Python
python使用torch随机初始化参数
Mar 22 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与XML、XSLT、Mysql的结合运用实现代码
2009/11/19 PHP
PHP实现把数字ID转字母ID
2013/08/12 PHP
php操作mongoDB实例分析
2014/12/29 PHP
PHP实现原生态图片上传封装类方法
2016/11/08 PHP
PHP strripos函数用法总结
2019/02/11 PHP
Track Image Loading效果代码分析
2007/08/13 Javascript
jquery 获取json数据实现代码
2009/04/27 Javascript
JavaScript 模式之工厂模式(Factory)应用介绍
2012/11/15 Javascript
javascript右下角弹层及自动隐藏(自己编写)
2013/11/20 Javascript
表格奇偶行设置不同颜色的核心JS代码
2013/12/24 Javascript
jQuery validate验证插件使用详解
2016/05/11 Javascript
JS 对象(Object)和字符串(String)互转方法
2016/05/20 Javascript
Angular2内置指令NgFor和NgIf详解
2016/08/03 Javascript
AngularJS删除路由中的#符号的方法
2016/09/20 Javascript
VueJS全面解析
2016/11/10 Javascript
Bootstrap选项卡学习笔记分享
2017/02/13 Javascript
node.js基于fs模块对系统文件及目录进行读写操作的方法详解
2017/11/10 Javascript
react native 获取地理位置的方法示例
2018/08/28 Javascript
Vue数字输入框组件的使用方法
2019/10/19 Javascript
vue 解决computed修改data数据的问题
2019/11/06 Javascript
vue与iframe之间的信息交互的实现
2020/04/08 Javascript
JS深入学习之数组对象排序操作示例
2020/05/01 Javascript
Python json模块使用实例
2015/04/11 Python
Python登录并获取CSDN博客所有文章列表代码实例
2017/12/28 Python
python的faker库用法
2019/11/28 Python
Django 再谈一谈json序列化
2020/03/16 Python
keras topN显示,自编写代码案例
2020/07/03 Python
如何利用python之wxpy模块玩转微信
2020/08/17 Python
python基于openpyxl生成excel文件
2020/12/23 Python
印度尼西亚在线时尚购物网站:ZALORA印尼
2016/08/02 全球购物
联想瑞士官方网站:Lenovo Switzerland
2017/11/19 全球购物
西班牙在线光学:Visual-Click
2020/06/22 全球购物
英文自我鉴定
2013/12/10 职场文书
同学聚会祝酒词
2015/08/10 职场文书
如何将JavaScript将数组转为树形结构
2021/06/02 Javascript
Windows server 2016服务器基本设置
2022/08/14 Servers