使用 Frame() class 创建框架
using the Frame() class to create frames
我对 tkinter 很陌生,我想知道我应该如何创建框架。
如果一个比另一个更受欢迎,为什么会这样?
这样比较好:
import tkinter as tk
class MainApplication(tk.Frame):
def __init__(self, parent):
main_frame = tk.Frame(parent)
root = tk.Tk()
main_app = MainApplication(root)
root.mainloop()
或者像这样:
import tkinter as tk
class MainApplication(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self, parent)
root = tk.Tk()
main_app = MainApplication(root)
root.mainloop()
第一个创建两个帧——实例本身(main_app
)是一个帧,它包含一个子帧(main_frame
) .但是,因为您没有调用 Frame
的 __init__
,所以第一帧未正确构建。
如果您要立即创建一个内部框架并将所有内容放入其中,那么从 Frame
继承是没有意义的。
顺便说一下,您的代码不太行得通。如果您想真正看到应用程序小部件(及其子部件),那么您将需要在小部件上调用 pack
、place
或 grid
。
例如:
root = tk.Tk()
main_app = MainApplication(root)
main_app.pack(fill="both", expand=True)
root.mainloop()
我对 tkinter 很陌生,我想知道我应该如何创建框架。 如果一个比另一个更受欢迎,为什么会这样?
这样比较好:
import tkinter as tk
class MainApplication(tk.Frame):
def __init__(self, parent):
main_frame = tk.Frame(parent)
root = tk.Tk()
main_app = MainApplication(root)
root.mainloop()
或者像这样:
import tkinter as tk
class MainApplication(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self, parent)
root = tk.Tk()
main_app = MainApplication(root)
root.mainloop()
第一个创建两个帧——实例本身(main_app
)是一个帧,它包含一个子帧(main_frame
) .但是,因为您没有调用 Frame
的 __init__
,所以第一帧未正确构建。
如果您要立即创建一个内部框架并将所有内容放入其中,那么从 Frame
继承是没有意义的。
顺便说一下,您的代码不太行得通。如果您想真正看到应用程序小部件(及其子部件),那么您将需要在小部件上调用 pack
、place
或 grid
。
例如:
root = tk.Tk()
main_app = MainApplication(root)
main_app.pack(fill="both", expand=True)
root.mainloop()