我有一个 GUI,我需要不同的 tkinter 框架来具有不同的窗口大小,因为它们包含在其中。有没有办法明确设置这些框架的大小,或者相对于其中包含的内容来调整它们的大小?
答案 0 :(得分:0)
您好,Kane_Iskra 有两种主要方式可以做您想做的事。
要将项目相对放置在框架内,您必须使用包装或网格放置方法。例如。
打包
frame1 = tk.frame(root, width=30,height=30)
frame1.pack(side='top')
网格
frame1 = tk.frame(root, width=30,height=30)
frame1.grid(row='top')
# set weights to the frame so when you resize the window the frame size changes
root.grid_rowconfigure(0, weight=1)
root.grid_columnconfigure(0, weight=1)
或者你也可以使用
来改变窗口的大小root.geometry('1000x540')
答案 1 :(得分:0)
我曾经用类做过这个例子,因为你在我帖子上方的文字中写道你正在寻找这样一个例子。
如果您想动态更改窗口,place
是一个非常好的选择(当然,grid
也是可能的)。这样做的缺点是,如果您更改一个尺寸,您通常必须为另一帧更改它(但并非总是如此)。而且你必须不断地试验 rely, relx
....
from tkinter import *
class MainWindow(Tk):
def __init__(self, parent=None):
super().__init__()
self.parent = parent
#=> your class imports:
# toolbar:
self.toolBar = ToolBar(self)
self.toolBar.place(relx=0, rely=0, relwidth=1, relheight=0.1)
# main
self.main = Main(self)
self.main.place(relx=0, rely=0.1, relwidth=1, relheight=0.9)
class ToolBar(Frame):
def __init__(self, parent):
Frame.__init__(self, bg="light blue") # you can set your frame attributes here
self.parent = parent # your reference to the other classes, for example (if you
# want to communicate with class Main: self.parent.main.widget.....)
class Main(Frame):
def __init__(self, parent):
Frame.__init__(self, bg="light green", highlightthickness=10) # frame attributes
self.parent = parent # reference
btn = Button(self, text="CloseApp", bg=self.cget("bg"), command=self.parent.destroy) #exit button
btn.place(relwidth=0.3, relheight=0.3, rely=0.35, relx=0.35) # self.parent.destroy reference to you MainWindow (to destroy)
if __name__ == '__main__':
mw = MainWindow()
mw.geometry("750x500")
mw.mainloop()