关于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爬虫入门教程--利用requests构建知乎API(三)
May 25 Python
Windows环境下python环境安装使用图文教程
Mar 13 Python
DataFrame中去除指定列为空的行方法
Apr 08 Python
python smtplib模块自动收发邮件功能(一)
May 22 Python
Python使用Pandas读写Excel实例解析
Nov 19 Python
利用python读取YUV文件 转RGB 8bit/10bit通用
Dec 09 Python
详解用Pytest+Allure生成漂亮的HTML图形化测试报告
Mar 31 Python
django为Form生成的label标签添加class方式
May 20 Python
Python 执行矩阵与线性代数运算
Aug 01 Python
2020版Python学习路线图(附学习资料)
Sep 15 Python
Python爬虫+Tkinter制作一个翻译软件的示例
Feb 20 Python
python Django框架快速入门教程(后台管理)
Jul 21 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
VOLVO车载收音机
2021/03/02 无线电
回答PHPCHINA上的几个问题:URL映射
2007/02/14 PHP
有关PHP中MVC的开发经验分享
2012/05/17 PHP
使用php get_headers 判断URL是否有效的解决办法
2013/04/27 PHP
PHP无限分类(树形类)的深入分析
2013/06/02 PHP
Codeigniter控制器controller继承问题实例分析
2016/01/19 PHP
PHP Swoole异步读取、写入文件操作示例
2019/10/24 PHP
读JavaScript DOM编程艺术笔记
2011/11/15 Javascript
javascript读写json示例
2014/04/11 Javascript
jQuery+ajax实现鼠标单击修改内容的方法
2014/06/27 Javascript
JavaScript对象学习小结
2015/09/02 Javascript
详解JavaScript的变量和数据类型
2015/11/27 Javascript
javascript的几种继承方法介绍
2016/03/22 Javascript
使用CSS+JavaScript或纯js实现半透明遮罩效果的实例分享
2016/05/09 Javascript
layui获取多选框中的值方法
2018/08/15 Javascript
vue-router重定向和路由别名的使用讲解
2019/01/19 Javascript
基于Koa(nodejs框架)对json文件进行增删改查的示例代码
2019/02/02 NodeJs
JS中的算法与数据结构之栈(Stack)实例详解
2019/08/20 Javascript
Js图片点击切换轮播实现代码
2020/07/27 Javascript
JS typeof fn === 'function' && fn()详解
2020/08/22 Javascript
机器学习的框架偏向于Python的13个原因
2017/12/07 Python
python中copy()与deepcopy()的区别小结
2018/08/03 Python
Python实现 版本号对比功能的实例代码
2019/04/18 Python
解决pycharm运行程序出现卡住scanning files to index索引的问题
2019/06/27 Python
OpenCV+face++实现实时人脸识别解锁功能
2019/08/28 Python
Python+Tensorflow+CNN实现车牌识别的示例代码
2019/10/11 Python
学Python 3的理由和必要性
2019/11/19 Python
Python图像处理库PIL的ImageFont模块使用介绍
2020/02/26 Python
Python Selenium异常处理的实例分析
2021/02/28 Python
新农村建设汇报材料
2014/08/15 职场文书
2014年国庆节演讲稿
2014/09/19 职场文书
个人年度总结报告
2015/03/09 职场文书
2015年教师节演讲稿范文
2015/03/19 职场文书
培训心得体会怎么写
2016/01/25 职场文书
Python爬虫数据的分类及json数据使用小结
2021/03/29 Python
python中的sys模块和os模块
2022/03/20 Python