如果您在一个窗口中有多个项目并且想要约束一个小部件,这可能会变得复杂。正确答案取决于窗口中发生的其他情况以及您定义的调整大小行为。
一个简单的方法是确保画布位于不会调整大小的区域中。例如:
import tkinter as tk
root = tk.Tk()
root.grid_columnconfigure(0, weight=1)
root.grid_rowconfigure(1, weight=1)
canvas = tk.Canvas(root, width=400, height=400, bg="bisque")
canvas.grid(row=0, column=1, sticky="nsew")
root.mainloop()
您还可以使用wm_aspect 将整个窗口限制为特定的纵横比。这使您可以调整窗口大小,但整个窗口将保留特定的纵横比。
例如,要强制根窗口为正方形,您可以这样做:
root = tk.Tk()
root.wm_aspect(1, 1, 1, 1)
来自 tcl/tk 手册页(并翻译成 python 语法):
window.wm_aspect(?minNumer minDenom maxNumer maxDenom?) - 如果 minNumer, minDenom, maxNumer,和 maxDenom 都被指定,然后它们将被传递给窗口管理器,并且窗口管理器应该使用它们来强制执行窗口可接受的宽高比范围。窗口的纵横比(宽度/长度)将被限制在 minNumer/minDenom 和 maxNumer/maxDenom 之间。如果 minNumer 等都指定为空字符串,则删除任何现有的纵横比限制。如果指定了 minNumer 等,则该命令返回一个空字符串。否则,它返回一个包含四个元素的元组,它们是 minNumer、minDenom、maxNumer 和 maxDenom 的当前值em>(如果没有任何方面限制生效,则返回一个空字符串)。