Python Tkinter父帧似乎在按钮内部收缩
我正在努力在一个框架内显示一个按钮(其中将包含其他按钮)。我将把这个框架放入的根窗口必须被组织成一个网格(将会有更多的小部件),但是这个框架必须用pack()组织。我的目标是使框架填充指定给它的网格单元,并在此框架内显示按钮 然而,当我启动这个程序时,框架似乎消失了,或者在按钮内部收缩了 我如何使框架在按钮位于内部的情况下保持其原始尺寸Python Tkinter父帧似乎在按钮内部收缩,python,tkinter,tkinter-layout,Python,Tkinter,Tkinter Layout,我正在努力在一个框架内显示一个按钮(其中将包含其他按钮)。我将把这个框架放入的根窗口必须被组织成一个网格(将会有更多的小部件),但是这个框架必须用pack()组织。我的目标是使框架填充指定给它的网格单元,并在此框架内显示按钮 然而,当我启动这个程序时,框架似乎消失了,或者在按钮内部收缩了 我如何使框架在按钮位于内部的情况下保持其原始尺寸 from tkinter import * root = Tk() root.geometry('300x300') frame=Frame(root, b
from tkinter import *
root = Tk()
root.geometry('300x300')
frame=Frame(root, bg="green", width=150, height=150)
frame.grid(row=0, column=0)
Breset=Button(frame,text='Reset', bg='pink')
Breset.pack()
root.mainloop()
我如何使框架在按钮位于内部的情况下保持其原始尺寸
from tkinter import *
root = Tk()
root.geometry('300x300')
frame=Frame(root, bg="green", width=150, height=150)
frame.grid(row=0, column=0)
Breset=Button(frame,text='Reset', bg='pink')
Breset.pack()
root.mainloop()
你几乎永远都不想那样做。如果你把更多的小部件放进去,框架自然会选择合适的大小来适应所有的东西
如果您想让框架填充窗口,可以使用各种grid
选项。不过,如果希望框架始终填充整个窗口,则使用pack
比使用grid
更容易
带包装的溶液
要获得填充根窗口的frame
,只需使用fill
和expand
选项和pack
:
frame.pack(fill="both", expand=True)
网格求解
使用网格
还需要几个步骤。首先,您需要使用sticky
选项,以便框架填充分配给它的空间。接下来,您需要告诉网格给框架分配未分配的空间
root.grid_rowconfigure(0, weight=1)
root.grid_columnconfigure(0, weight=1)
frame.grid(row=0, column=0, sticky="nsew")
关闭帧的自动调整大小
您最初要求的是所谓的几何体传播-这是子对象的大小向上传播到父对象的特性。您可以使用grid\u propagate
或pack\u propagate
将其关闭,具体取决于您对子窗口小部件使用的内容。在您的情况下,您正在为框架内的按钮使用pack
:
frame.pack_propagate(False)
这几乎总是三种解决方案中最糟糕的一种。几何体管理器pack
和grid
的全部要点是让tkinter完成所有决定小部件大小的工作