Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ¿;我怎样才能避开这个问题;“未申报”;错误_Python_Python 3.x_Tkinter - Fatal编程技术网

Python ¿;我怎样才能避开这个问题;“未申报”;错误

Python ¿;我怎样才能避开这个问题;“未申报”;错误,python,python-3.x,tkinter,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.

这不是太笼统,所以我不能把它浓缩在标题下,但这是我的问题。我正在使用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()
,但是按钮似乎没有受到更改,因为按下它什么也不做。

问题是您调用了
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()

您的缩进已关闭,可以修复吗?请提供预期的缩进。即使使用固定缩进,此代码也不可能按编写的方式工作。Tk仅在Python2上由
Tkinter
提供(在Python3上是
Tkinter
)。但是没有一个arg
super()
只是Python 3。请提供一个实际的问题,并用python-3.x或python-2.x标记您的问题,以指示应该使用哪个版本。不存在“未声明”错误。在任何情况下,缩进都是完全错误的,并且是python的一个关键部分,因此您必须修复它以反映您的实际用例。最后,请始终提供一个。最后,我敢肯定您在编写python类定义时遇到了一些基本的障碍,您是否做过任何研究以了解可能的原因以及如何解决它?让我们不要结束这个。。。问题相当清楚。这也许是一个很好的重复。我想这解释了为什么我在以前的项目中采用了类似的方法,尽管在我声明的函数和其他对象的顺序上具有几乎相同的结构,但出于某种原因,我决定省略这两个
self
。当我再次使用电脑时,我会尝试一下。