¿我如何解决这个“未声明的”错误?

时间:2020-04-25 00:29:00

标签: python python-3.x tkinter

这不是太笼统,所以我不太可以将其缩写为标题,但这是我的问题。我正在使用Tkinter创建一个非常简单的UI来选择一个选项,用一个按钮确认该选项,然后该按钮会忘记标签以便更新它们并再次打包。看起来像这样

from tkinter import ttk

class window(ttk.Frame):
     def __init__(self, master):
           super().__init__(master)

           self.option1 = ttk.Radiobutton(master, text="Option")
           self.option2 = ttk.Radiobutton(master, text="Option")
           self.button = ttk.Button(master,text="Confirm",command=Next())
           self.option1.pack(side="top")
           self.option2.pack(side="top")
           self.button.pack(side="top")


           def Next():
                 self.option1.pack_forget()
                 self.button.pack_forget()
    ...

之所以会出现我的问题,是因为该按钮必须使用Next()函数,它会告诉我由于尚未声明它而无法使用它,并且如果在函数下面声明该按钮,它会告诉我该按钮尚未声明。我尝试在未事先定义命令的情况下声明了该命令,并且在读取了Next()函数之后,我这次再次声明了该命令,即该按钮的命令应为Next(),但该按钮似乎没有遭受改变是因为按下它无能为力。

1 个答案:

答案 0 :(得分:1)

问题是您在定义类时调用了Next()。您只需分配self.Next。当您实例化该类时,将创建该按钮。请注意,Next是实例方法,还需要一个self参数

from Tkinter import ttk

class window(ttk.Frame):
     def __init__(self, master):
         super().__init__(master)

        self.option1 = ttk.Radiobutton(master, text="Option")
        self.option2 = ttk.Radiobutton(master, text="Option")
        self.button = ttk.Button(master, text="Confirm", command=self.Next)
        self.option1.pack(side="top")
        self.option2.pack(side="top")
        self.button.pack(side="top")


    def Next(self):
        self.option1.pack_forget()
        self.button.pack_forget()