关于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
0
投稿
猜你喜欢
- 本教程使用的是python 3 和django为事例打开pycharmfile -> new
- 本文实例讲述了python编程开发之textwrap文本样式处理技巧。分享给大家供大家参考,具体如下:在看python的API的时候,发现p
- 今晚想实现这样一个功能:将输入字符串中的字母 “i” 变成字母 “p”。当时想的很简单,直接用for循环遍历,然后替代,出问题的代码如下:n
- 目前很多网站都使用ajax技术动态加载数据,和常规的网站不一样,数据时动态加载的,如果我们使用常规的方法爬取网页,得到的只是一堆html代码
- 本文实例讲述了Python2与Python3的区别。分享给大家供大家参考,具体如下:python2与python3的区别1、性能2、编码格式
- 一、SeabornSeaborn 建于 matplotlib 库的之上。它有许多内置函数,使用这些函数,只需简单的代码行就可以创建漂亮的绘图
- 在使用DB2以来,碰到了几次出现提示SQL1032N错误,每次出错时出错信息大概如下:11/21/2004 22:15:33 0 0 SQL
- ⭐️网页解析利器parsel实战我们以实际的案例,来具体了解学习其功能。我们在这里重点讲解其两种方式。一个是XPATH,一个是CSS。我们以
- 文章参考自:link.前言最近学习python切片,时而醍醐灌顶时而云里雾里,今天终于弄清楚了 python切片 里面自己经常疑惑的地方,记
- 用的pytorch来训练deeplabv3+在做deeplabv3+的过程中,我的训练图片是8位的,如下图:8位的:24位的:这样虽然在训练
- [Hack] 意为”劈”、”砍”。 [Hacker] 意为”黑客”CSS Hack 是指针对不同的浏览器写不同的CSS code的过程,简单
- 首先,你要知道pycharm可以通过ssh链接到远程服务器,并且也能够用pycharm运行远程服务器的代码。可以参考https://www.
- 本文实例讲述了Python进阶之使用selenium爬取淘宝商品信息功能。分享给大家供大家参考,具体如下:# encoding=utf-8_
- 1.图像处理库import cv2 as cvfrom PIL import *常用的图像处理技术有图像读取,写入,绘图,图像色彩空间转换,
- 转发时请保留此声明信息,这段声明不并会影响你的速度! @author:  
- 需求分析:python实现一个远程通过网络邮件控制计算机重启或关机的项目。程序流程:过程分析:要实现本功能,首先要直到在本地如何通过Pyth
- 操作实现函数: 代码如下:Function AddWater(n) Set Photo = 
- pycharm中导入selenium报错现象: pycharm中输入from selenium import webdriver, sele
- Python是一门清晰简洁的语言,如果你对一些细节不了解的话,就会掉入到那些深不见底的“坑”里,下面,我就来总结一些Python里常见的坑。
- 本文实例讲述了python使用cPickle模块序列化的方法,分享给大家供大家参考。具体方法如下:import cPickledata1 =