在 python Tkinter 中另一个框架内的框架
Frame inside another frame In python Tkinter
我正在尝试将框架放在框架内....就像我想将 buttoncontainer 和 buttoncontainer2 放在 bodycontainer 框架内一样。但是当我这样做时 bodycontainer 消失了,..我无法弄清楚我的问题..我知道我犯了一些愚蠢的错误....请帮我弄清楚这个问题。
from Tkinter import *
root = Tk()
root.title('Tkinter Apps')
root.resizable(width=TRUE, height=TRUE)
root.geometry('{}x{}'.format(800, 500))
headerbanner=Frame(root,width=790,height=50,highlightbackground="gray",highlightthickness=1)
headerbanner.grid(row=0,column=0,padx=5,pady=2)
bodycontainer=Frame(root,width=790,height=380,highlightbackground="gray",highlightthickness=1)
bodycontainer.grid(row=1,column=0,padx=5,pady=0)
buttoncontainer=Frame(bodycontainer,width=50,height=300,highlightbackground="gray",highlightthickness=1)
buttoncontainer.grid(row=0,column=0)
buttoncontainer2=Frame(bodycontainer,width=50,height=300,highlightbackground="gray",highlightthickness=1)
buttoncontainer2.grid(row=0,column=1)
root.mainloop()
code
Screenshot of the output
grid()
几何管理器将缩小框架以适合包含的小部件。因此看起来框架已经消失了。您可以使用 grid_propagate(False)
停止这种大小传播。请参阅下面的示例。我给每一帧不同的颜色来显示它们的位置:
from Tkinter import *
root = Tk()
root.title('Tkinter Apps')
root.resizable(width=TRUE, height=TRUE)
root.geometry('{}x{}'.format(800, 500))
headerbanner=Frame(root,width=790,height=50,bg='khaki')
headerbanner.grid(row=0,column=0,padx=5,pady=2)
bodycontainer=Frame(root,width=790,height=380,bg='tan')
bodycontainer.grid(row=1,column=0,padx=5,pady=0)
bodycontainer.grid_propagate(False) # Stop grid() from resizing bodycontainer
buttoncontainer=Frame(bodycontainer,width=50,height=300,bg='powder blue')
buttoncontainer.grid(row=0,column=0)
buttoncontainer2=Frame(bodycontainer,width=50,height=300,bg='olivedrab1')
buttoncontainer2.grid(row=0,column=1)
root.mainloop()
我正在尝试将框架放在框架内....就像我想将 buttoncontainer 和 buttoncontainer2 放在 bodycontainer 框架内一样。但是当我这样做时 bodycontainer 消失了,..我无法弄清楚我的问题..我知道我犯了一些愚蠢的错误....请帮我弄清楚这个问题。
from Tkinter import *
root = Tk()
root.title('Tkinter Apps')
root.resizable(width=TRUE, height=TRUE)
root.geometry('{}x{}'.format(800, 500))
headerbanner=Frame(root,width=790,height=50,highlightbackground="gray",highlightthickness=1)
headerbanner.grid(row=0,column=0,padx=5,pady=2)
bodycontainer=Frame(root,width=790,height=380,highlightbackground="gray",highlightthickness=1)
bodycontainer.grid(row=1,column=0,padx=5,pady=0)
buttoncontainer=Frame(bodycontainer,width=50,height=300,highlightbackground="gray",highlightthickness=1)
buttoncontainer.grid(row=0,column=0)
buttoncontainer2=Frame(bodycontainer,width=50,height=300,highlightbackground="gray",highlightthickness=1)
buttoncontainer2.grid(row=0,column=1)
root.mainloop()
code
Screenshot of the output
grid()
几何管理器将缩小框架以适合包含的小部件。因此看起来框架已经消失了。您可以使用 grid_propagate(False)
停止这种大小传播。请参阅下面的示例。我给每一帧不同的颜色来显示它们的位置:
from Tkinter import *
root = Tk()
root.title('Tkinter Apps')
root.resizable(width=TRUE, height=TRUE)
root.geometry('{}x{}'.format(800, 500))
headerbanner=Frame(root,width=790,height=50,bg='khaki')
headerbanner.grid(row=0,column=0,padx=5,pady=2)
bodycontainer=Frame(root,width=790,height=380,bg='tan')
bodycontainer.grid(row=1,column=0,padx=5,pady=0)
bodycontainer.grid_propagate(False) # Stop grid() from resizing bodycontainer
buttoncontainer=Frame(bodycontainer,width=50,height=300,bg='powder blue')
buttoncontainer.grid(row=0,column=0)
buttoncontainer2=Frame(bodycontainer,width=50,height=300,bg='olivedrab1')
buttoncontainer2.grid(row=0,column=1)
root.mainloop()