使用入口小部件Tkin时出错

2024-06-16 11:24:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个图形用户界面,将公制单位转换为英制单位或其他单位。但是,从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()

Tags: selfmasterdef错误单位columnbuttonroot
1条回答
网友
1楼 · 发布于 2024-06-16 11:24:04

绑定函数时,tkinter总是传入表示事件的对象。在

valid改成这样:

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

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

^{pr2}$

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

相关问题 更多 >