关于Python Tkinter Button控件command传参问题的解决方式
作者:广州-辉Python开发 发布时间:2021-08-18 23:10:09
标签:Tkinter,Button,command传参
环境: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的参数进行绑定。(我比较推荐使用方法二)。好了,今天就说到这吧,希望大家多多支持脚本之家!
来源:https://blog.csdn.net/weixin_41098458/article/details/81781930


猜你喜欢
- jQuery传递中文参数乱码,原因是默认的传递方式没有采用UTF-8,所有我们可以在传递参数的时候对参数进行编码,然后再操作,代码如下,红色
- numpy和matlab的几点差异Python numpy和matlab都是便捷灵活的科学计算语言,两者具有很多相似之处,但也有一些混淆的地
- 在进行单个爬虫抓取的时候,我们不可能按照一次抓取一个url的方式进行网页抓取,这样效率低,也浪费了cpu的资源。目前python上面进行并发
- 在进行数据抓取时,经常会遇到IP被限制的情况,常见的解决方案是搭建 * 池,或购买IP代理的服务。除此之外,还有一个另外的方法就是使用家里
- Excel的最合适列宽(openpyxl)Python的Pandas模块是处理Excel的利器,尤其是加工保存Excel非常方便,但是唯独想
- 本文实例为大家分享了python判断设备是否联网的具体代码,供大家参考,具体内容如下直接上代码,就是用判断socket能不连上的方法来判断。
- 表结构如下:id varchar(32) info json数据:id = 1info = {&qu
- 本文实例为大家分享了tensorflow使用CNN分析mnist手写体数字数据集,供大家参考,具体内容如下import tensorflow
- vue项目无法删除问题今天删除本地的vue项目,一直提示“操作无法完成,因为其中的文件夹或文件已在另一个程序组打开,请关
- 1:django-admin.py startproject 项目名2:cd 项目名3:修改setting.py(1):
- 一、过滤器作用过滤器用于进行文本内容格式化处理。二、过滤器的使用方式过滤器可以在插值表达式和 v-bind 中使用。三、过滤器的分类全局过滤
- 在 ASP 的内建对象中除了用于发送、接收和处理数据的对象外,还有一些非常实用的代表 Active Server 应用程序和单个
- 小编使用python中的django框架来完成!1,首先用pycharm创建django项目并配置相关环境这里小编默认项目都会创建setti
- 最近自己准备学习Python,之前也看了点基础知识。做图形这块需要用到OpenCV所以就需要配置环境,之前准备用的是Python3,后来发现
- if判断判断的定义 如果条件满足,就做一件事;条件不满足,就做另一件事; 判断语句又被称为分支语句,有判断,才有分支;i
- python装饰器在平常的python编程中用到的还是很多的,在本篇文章中我们先来介绍一下python中最常使用的@staticmethod
- 爬取xxx天气爬取网址:https://tianqi.2345.com/today-60038.htm安装pip install scrap
- 1.插入数据insert into表名(列名1,列名2,列名..) values(值1,值2,值...); insert into
- 可迭代(iterable)迭代(遍历)就是按照某种顺序逐个访问对象中的每一项。Python中有很多对象都是可以通过for语句来直接遍历的,例
- vue跳转后不记录历史记录vue路由跳转一般情况下是使用push, this.$router.push({