下面的代码将构建一个基本按钮GUI
from tkinter import *
class App:
def __init__(self, master):
frame = Frame(master)
frame.pack()
self.button = Button(frame,
text="QUIT", fg="red",
command=quit)
self.button.pack(side=LEFT)
self.slogan = Button(frame,
text="Hello",
command=self.write_slogan)
self.slogan.pack(side=LEFT)
def write_slogan(self):
print("Tkinter is easy to use!")
root = Tk()
app = App(root)
root.mainloop()
但即使我关闭Frame类并用master替换它也会显示相同的结果!
from tkinter import *
class App:
def __init__(self, master):
#frame = Frame(master)
#frame.pack()
self.button = Button(master,
text="QUIT", fg="red",
command=quit)
self.button.pack(side=LEFT)
self.slogan = Button(master,
text="Hello",
command=self.write_slogan)
self.slogan.pack(side=LEFT)
def write_slogan(self):
print("Tkinter is easy to use!")
root = Tk()
app = App(root)
root.mainloop()
如果我们要获得相同的结果,为什么添加Frame类如此重要?
答案 0 :(得分:4)
如果我们要获得相同的结果,为什么添加Frame类如此重要?
在您的具体示例中,创建框架没有意义。
Tkinter中Frame类的用途是什么?
目的是充当您想要视为逻辑单元的一组小部件的容器。
例如,传统应用可能在顶部有一个工具栏,左侧是导航面板,主要区域,底部可能有一个状态栏。您可以使用框架来包含工具栏中的所有窗口小部件,使用状态栏中所有窗口小部件的另一个框架,以及用于在导航窗格中包含窗口小部件的另一个框架。
答案 1 :(得分:0)
帧用于复杂的布局。它们有助于将小部件分组到特定位置,而无需直接管理任何基本布局更改的任何小部件布局。
有一些关于帧HERE的使用的文档。
如果您只是创建一个不需要许多小部件的简单界面,则可能不需要使用框架。
如果是更复杂的界面,您可能希望使用框架来提高布局的可管理性。
一个例子:如果您在屏幕右侧设置了一组小部件,但后来决定您希望它们位于屏幕的左侧,则可以更改框架的位置以及所有里面的小部件会随之移动。如果您没有使用框架,那么您需要更改每个小部件配置以完成相同的移动。然后使用框架开始做更多的工作。
这只是一个简单的例子,但它应该说明为什么框架对GUI的布局非常有用。
您还可以使用框架来装饰GUI。您可以在图像顶部对图层进行分层,并将框架的背景更改为对比色,以使您的GUI更具视觉吸引力。您可以根据链接的文档使用框架作为分隔线,但我没有以这种方式使用它。
我想说在Tkinter中有更多的方法可以使用框架,它们提供了更好的GUI设计灵活性,然后只使用根窗口。