我目前正在处理越来越长的Python Tkinter代码。我想为GUI中的一些帧使用多个类来实现。
下面的代码是我想要做的一个示例。基本上创建一个具有框架的类,并且框架使用另一个类作为父级。
但是当我运行代码时,我收到此错误"' MainProgram'对象没有属性' FirstFrame'"
任何解决方案?我尝试过搜索但是找不到这样的东西我没有成功。
import tkinter as tk
from tkinter import ttk
class MainProgram():
def __init__(self):
self.mainwin = tk.Tk()
self.FirstFrame()
class FirstFrame():
def __init__(self):
self.firstframe = ttk.LabelFrame(self.MainProgram.mainwin, text="hi")
self.firstframe.grid(column=0, row=0)
if __name__ == "__main__":
main = MainProgram()
main.mainwin.mainloop
答案 0 :(得分:1)
替换:
self.Firstframe()
使用:
self.ff=Firstframe()
- Firstframe()
不是Mainprogram
的属性。
答案 1 :(得分:0)
请查看此处的链接,以便将代码组织打造成类
的良好起点Switch between two frames in tkinter
该示例可以按原样使用'对于组织策略或作为一个非常好的模板来一次修改一个部分并了解其他可能的结构,其中一个类可用于创建另一个类的实例。
import tkinter as tk
from tkinter import ttk
class MainProgram():
def __init__(self):
self.mainwin = tk.Tk()
self.my_frame = FirstFrame()
# examine the child parent relationship
for child in self.mainwin.winfo_children():
print(child['text'])
class FirstFrame():
def __init__(self):
self.firstframe = ttk.LabelFrame(text="hi")
self.firstframe.grid(column=0, row=0)
ttk.Label(master=self.firstframe,text='a widget inside frame').grid()
if __name__ == "__main__":
main = MainProgram()
main.mainwin.mainloop