关于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使用xauth方式登录饭否网然后发消息
Apr 11 Python
python运行时间的几种方法
Jun 17 Python
对python中Matplotlib的坐标轴的坐标区间的设定实例讲解
May 25 Python
Python实用技巧之列表、字典、集合中根据条件筛选数据详解
Jul 11 Python
Python标准库使用OrderedDict类的实例讲解
Feb 14 Python
python 实现GUI(图形用户界面)编程详解
Jul 17 Python
Python爬虫 批量爬取下载抖音视频代码实例
Aug 16 Python
Scrapy框架实现的登录网站操作示例
Feb 06 Python
Python使用uuid库生成唯一标识ID
Feb 12 Python
解决python -m pip install --upgrade pip 升级不成功问题
Mar 05 Python
Django models文件模型变更错误解决
May 11 Python
浅析python中特殊文件和特殊函数
Feb 24 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
虫族 Zerg 魔法科技
2020/03/14 星际争霸
Discuz 模板语句分析及知识技巧
2009/08/21 PHP
Linux fgetcsv取得的数组元素为空字符串的解决方法
2011/11/25 PHP
Yii2 assets清除缓存的方法
2016/05/16 PHP
js 解决“options为空或不是对象”
2008/12/22 Javascript
window.onbeforeunload方法在IE下无法正常工作的解决办法
2010/01/23 Javascript
JS图片无缝、平滑滚动代码
2014/03/11 Javascript
Js实现动态添加删除Table行示例
2014/04/14 Javascript
js实现可兼容IE、FF、Chrome、Opera及Safari的音乐播放器
2015/02/11 Javascript
微信小程序 参数传递详解
2016/10/24 Javascript
Bootstrap Scrollspy源码学习
2017/03/02 Javascript
js+html5实现页面可刷新的倒计时效果
2017/07/15 Javascript
jquery如何实现点击空白处隐藏元素
2017/12/05 jQuery
JS重学系列之聊聊new操作符
2019/03/04 Javascript
vue 父组件中调用子组件函数的方法
2019/06/06 Javascript
vue3使用vue-count-to组件的实现
2020/12/25 Vue.js
[04:26]2014DOTA2西雅图国际邀请赛 总决赛TOPPLAY
2014/07/22 DOTA
python利用小波分析进行特征提取的实例
2019/01/09 Python
Python 中包/模块的 `import` 操作代码
2019/04/22 Python
pyqt5与matplotlib的完美结合实例
2019/06/21 Python
详解Django将秒转换为xx天xx时xx分
2019/09/27 Python
python中自带的三个装饰器的实现
2019/11/08 Python
Python matplotlib画图时图例说明(legend)放到图像外侧详解
2020/05/16 Python
python如何对链表操作
2020/10/10 Python
美国乡村商店:Plow & Hearth
2016/09/12 全球购物
阿玛尼意大利官网:Armani意大利
2018/10/30 全球购物
秋季运动会表扬稿
2014/01/16 职场文书
学徒工职责
2014/03/06 职场文书
品德评语大全
2014/05/05 职场文书
关于环保的建议书
2014/05/12 职场文书
弄虚作假心得体会
2014/09/10 职场文书
违纪检讨书范文
2015/01/27 职场文书
导游词开场白
2015/01/31 职场文书
个人求职自荐信范文
2015/03/06 职场文书
python 实现定时任务的四种方式
2021/04/01 Python
Nginx虚拟主机的搭建的实现步骤
2022/01/18 Servers