python Tkinter中另一个帧内的帧

2024-09-30 10:31:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将框架放置在框架内。。。。就像我想把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


Tags: 框架tkintercolumnrootwidthframegridrow
1条回答
网友
1楼 · 发布于 2024-09-30 10:31:32

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()

相关问题 更多 >

    热门问题