gpt4 book ai didi

python - 使用条目小部件 Tkinter 时出错

转载 作者:太空宇宙 更新时间:2023-11-03 14:34:23 26 4
gpt4 key购买 nike

我正在尝试创建一个 GUI,将公制测量值转换为英制测量值或反之亦然。但是,我无法从 Entry 小部件获取变量。我的确切错误是:

Exception in Tkinter callback Traceback (most recent call last): File "C:\Python32\lib\tkinter__init__.py", line 1399, in __call__ return self.func(*args) TypeError: valid() takes exactly 1 positional argument (2 given)

我尝试使用 textvariable 方法,但是我遇到了很多相同的错误。我对此有点陌生,所以我不确定这里出了什么问题。如有帮助,我们将不胜感激。

from tkinter import *

root = Tk()
class Buttons:
def __init__(self,master,ImperialText,MetricText,metricVal):
self.ImperialText = ImperialText
self.MetricText = MetricText



self.master = master
self.Text1 = (ImperialText +'-'+ MetricText)
self.button = Button(self.master,text= self.Text1,command = self.calc)
self.button.grid(column = 0)
self.button.config(height= 3,width=30)

def calc(self):
self.EntryStr = None
self.entry = Entry(self.master)
self.label = Label(self.master,text = 'Enter '+self.ImperialText)

self.entry.grid(column = 1,row = 1)
self.label.grid(column = 1,row = 0)

self.entry.bind('<Return>',self.valid)

def valid(self):
print (str(self.entry.get()))

button1 = Buttons(root,'inches','centimetres',2.54)
button2 = Buttons(root,'miles','kilometres',1.6093)
button3 = Buttons(root,'foot','metres',0.3048)
button4 = Buttons(root,'yards','metres',0.9144)
button5 = Buttons(root,'gallons','litres',4.546)
button6 = Buttons(root,'pounds','kilograms',0.454)
button7 = Buttons(root,'ounces','grams',0.454)

root.mainloop()

最佳答案

当你绑定(bind)一个函数时,tkinter 总是传入一个代表事件的对象。

valid更改为如下所示:

    def valid(self, event):
print (str(self.entry.get()))

如果将多个小部件绑定(bind)到同一个函数,则接收事件的小部件是event.widget。因此,例如,您可以像这样重写代码以使其更可重用:

def valid(self, event):
print(event.widget.get())

可以在此处找到 bind 方法的其他文档和示例:

关于python - 使用条目小部件 Tkinter 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47064169/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com