我的理解是,在初始化方法中的所有框架和小部件之后__init__,tkinter窗口会调整大小以适应所有这些组件.
我想将窗口的初始化大小设置为其最小大小.我希望能够最大化并扩大窗口的大小,但我从不希望窗口足够小以开始隐藏窗口小部件.
我该如何做到这一点?
Joh*_*Jr. 40
您也可以通过使用以下内容立即强制更新,而无需进入主循环:
root = Tk()
# set up widgets here, do your grid/pack/place
# root.geometry() will return '1x1+0+0' here
root.update()
# now root.geometry() returns valid size/placement
root.minsize(root.winfo_width(), root.winfo_height())
Run Code Online (Sandbox Code Playgroud)
effbot tkinterbook 上update()的描述:
处理所有挂起事件,调用事件回调,完成任何挂起的几何管理,根据需要重绘小部件,以及调用所有挂起的空闲任务.应谨慎使用此方法,因为如果从错误的位置(例如,从事件回调中调用,或者从可以以任何方式从事件回调调用的函数等)调用它,可能会导致非常讨厌的竞争条件).如有疑问,请改用update_idletasks.
我已经习惯了这个问题,但是在试图弄清楚如何在进入主循环之前获取小部件的大小/位置等方面做得很糟糕.
小智 13
我知道这个问题很老,但这是另一种方式:
root = Tk()
root.minsize(foo, bar)
Run Code Online (Sandbox Code Playgroud)
root.minsize()将窗口的最小大小设置为foo和bar,其中foo和bar分别是窗口的宽度和高度.
但是你必须在mainloop完成运行之前运行此代码.它只会在调用命令后生效.