Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.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作为tk导入 从tkinter导入ttk,StringVar 从tkinter.constants导入已禁用 大字体=('Verdana',12) Auswertung类(tk.tk): 定义初始化(self,*args,**kwargs): tk.tk.\uuuuu初始化(self,*args,**kwargs) 容器=tk.框架(自身) container.grid(行=0,列=1,padx=10,pady=10) conta

我想通过按下另一个按钮将一个按钮的状态更改为正常

将tkinter作为tk导入
从tkinter导入ttk,StringVar
从tkinter.constants导入已禁用
大字体=('Verdana',12)
Auswertung类(tk.tk):
定义初始化(self,*args,**kwargs):
tk.tk.\uuuuu初始化(self,*args,**kwargs)
容器=tk.框架(自身)
container.grid(行=0,列=1,padx=10,pady=10)
container.grid_rowconfigure(0,权重=1)
container.grid\u column配置(0,权重=1)
self.frames={}
对于F in(Datenwahl,):
框架=F(容器,自身)
self.frames[F]=帧
frame.grid(行=0,列=0,sticky='nsew')
自我展示框架(Datenwahl)
def显示画面(自身,续):
frame=self.frames[cont]
frame.tkraise()
def启用按钮2(自身):
self.button2.config(状态=正常)
类Datenwahl(tk.Frame):
定义初始化(自、父、控制器):
tk.Frame.\uuuuu init\uuuuuu(self,parent,)
label=tk.label(self,text='Start Page',font=大字体)
label.grid(行=0,列=1,padx=10,pady=10,粘性='ew')
button1=tk.按钮(自身,文本='访问第1页',
command=lambda:controller.enable_button2())
按钮1.网格(行=1,列=1,padx=10,pady=10)
button2=tk.按钮(自身,文本='访问第2页',状态=已禁用,
命令=lambda:controller.show_帧(第二页))
按钮2.网格(行=2,列=1,padx=10,pady=10)
app=Auswertung()
app.mainloop()
这是整个错误消息:

Traceback (most recent call last):
  File "C:\Users\pasca\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 1705, in __call__
    return self.func(*args)
  File "C:\Users\pasca\OneDrive\Dokumente\Privat\Python lernen\nested\tested.py", line 50, in <lambda>
    command= lambda : controller.enable_button2())
  File "C:\Users\pasca\OneDrive\Dokumente\Privat\Python lernen\nested\tested.py", line 34, in enable_button2
    self.button2.config(sate = NORMAL)
  File "C:\Users\pasca\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 2101, in __getattr__
    return getattr(self.tk, attr)
AttributeError: '_tkinter.tkapp' object has no attribute 'button2'
回溯(最近一次呼叫最后一次):
文件“C:\Users\pasca\AppData\Local\Programs\Python\Python37-32\lib\tkinter\\uuuuuu init\uuuuuu.py”,第1705行,在调用中__
返回self.func(*args)
文件“C:\Users\pasca\OneDrive\Dokumente\Privat\Python-lernen\nested\tested.py”,第50行,在
command=lambda:controller.enable_button2())
文件“C:\Users\pasca\OneDrive\Dokumente\Privat\Python-lernen\nested\tested.py”,第34行,在enable\u按钮2中
self.button2.config(状态=正常)
文件“C:\Users\pasca\AppData\Local\Programs\Python\Python37-32\lib\tkinter\\uuuuuu init\uuuuuu.py”,第2101行,位于\uuu getattr中__
返回getattr(self.tk,attr)
AttributeError:“\u tkinter.tkapp”对象没有属性“button2”

我尝试了不同的方法来解决这个问题,但大多数情况下,它要么给出相同的错误,要么对按钮状态毫无作用。我期待着我们的帮助。

您需要通过添加
self
按钮2
设置为
Datenwahl
的类属性,而不是创建局部变量:

class Datenwahl(tk.Frame):

    def __init__(self, parent, controller):
        tk.Frame.__init__(self,parent,)
        ...
        self.button2 = tk.Button(self, text= 'Visit Page 2', state="disabled",
                            command= lambda : controller.show_frame(PageTwo))
        self.button2.grid(row=2, column=1, padx=10, pady=10)
然后,您可以在您的
Auswertung
实例中访问
按钮2

class Auswertung(tk.Tk):

    ...

    def enable_button2(self):
        self.frames[Datenwahl].button2.config(state = "normal")

您需要通过添加
self
,将
按钮2
设置为
Datenwahl
的类属性,而不是创建局部变量:

class Datenwahl(tk.Frame):

    def __init__(self, parent, controller):
        tk.Frame.__init__(self,parent,)
        ...
        self.button2 = tk.Button(self, text= 'Visit Page 2', state="disabled",
                            command= lambda : controller.show_frame(PageTwo))
        self.button2.grid(row=2, column=1, padx=10, pady=10)
然后,您可以在您的
Auswertung
实例中访问
按钮2

class Auswertung(tk.Tk):

    ...

    def enable_button2(self):
        self.frames[Datenwahl].button2.config(state = "normal")