我正在尝试改进 tkinter 应用程序的结构。
因此,我尝试了this中提到的OOP方法线程。
我尝试使用它,但无法比示例代码更进一步。我只需要一个状态栏和一个主体,但我无法显示任何内容(例如 Label
、Frame
、Canvas
、按钮
,...
)在状态栏/主类中。
这是我目前拥有的:
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 结构 link 。
我无法让 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()
关于python - 在类中创建 tkinter 标签、按钮等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59707458/