python的gui中赋值给command,关于Python Tkinter Button控件command传参问题的解决方式

本文对比了Python中Tkinter的两种常用方法——lambda表达式与textvariable绑定在Button上的参数传递,演示了如何在GUI中处理按钮事件并操作输入数据,最后建议使用textvariable绑定解决Button传参问题。
摘要由CSDN通过智能技术生成

环境: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的参数进行绑定。(我比较推荐使用方法二)。好了,今天就说到这吧,希望大家多多支持聚米学院!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值