我正在尝试改进我的tkinter应用程序结构。
因此,我尝试了此线程中提到的 OOP 方法。
我试图玩弄它,但除了示例代码之外,无法走得更远。我只需要一个状态栏和一个主体,但我无法在状态栏/主类中显示任何内容(例如Label
、Frame
、Canvas
、Button
、...
(。
这是我目前拥有的:
import tkinter as tk
class Statusbar(tk.Frame):
#create Labels, Buttons,...
class Main(tk.Frame):
#create Labels, Buttons,...
class MainApplication(tk.Frame):
def __init__(self, parent, *args, **kwargs):
tk.Frame.__init__(self, parent, *args, **kwargs)
self.parent = parent
self.statusbar = Statusbar(self)
self.main = Main(self)
self.statusbar.grid()
self.main.grid()
if __name__ == "__main__":
root = tk.Tk()
MainApplication(root).grid()
root.mainloop()
也许你可以为我指出正确的方向或给我看一个简单的例子。谢谢。
编辑:试图更具体:
我用过tkinter/python工作过一段时间。我只是不知道如何从上面的链接继续建议的 OOP 结构。 我无法在Statusbar
和Main
类中获取任何内容(例如:创建标签,按钮等(。所以,如果你能给我看一个简单的例子来在这些类中创建任何东西,我会很高兴。
这里有一些东西应该给你一个大致的想法:
import tkinter as tk
class Statusbar(tk.Frame):
def __init__(self, parent, *args, **kwargs):
tk.Frame.__init__(self, parent, *args, **kwargs)
lbl1 = tk.Label(self, text='Status1', fg='yellow', bg='blue')
lbl1.pack(side='left')
lbl2 = tk.Label(self, text='Status2', fg='white', bg='green')
lbl2.pack(side='left')
class Main(tk.Frame):
def __init__(self, parent, *args, **kwargs):
tk.Frame.__init__(self, parent, *args, **kwargs)
txt = tk.Text(self, width=15, height=5)
txt.insert(tk.END, 'Hello world')
txt.pack()
class MainApplication(tk.Frame):
def __init__(self, parent, *args, **kwargs):
tk.Frame.__init__(self, parent, *args, **kwargs)
self.parent = parent
self.statusbar = Statusbar(self)
self.main = Main(self)
self.statusbar.grid()
self.main.grid()
if __name__ == "__main__":
root = tk.Tk()
MainApplication(root).grid()
root.mainloop()