所以,这是我面临的问题的简化形式:
以下代码生成一个画布,其大小足以容纳标签,即使它被配置为400乘400
import tkinter as tk
root = tk.Tk()
canvas = tk.Canvas(root, width=400, height=400)
canvas.pack()
label = tk.Label(canvas, text='foo')
label.pack()
如果省略最后两行,那么画布的大小与我期望的一样(400乘400),但它不包含标签,这是我希望它包含的内容。
正如我所说的,这是我问题的一种简化形式,我实际上想把几个小部件放到画布上,但这种行为是我问题的原因。有没有办法让画布达到我想要的大小(以像素为单位)和将它用作其他小部件的主控制器?
答案 0 :(得分:1)
您可以做的是设置根窗口的大小:
import tkinter as tk
root = tk.Tk()
root.geometry('400x400')
canvas = tk.Canvas(root)
canvas.pack()
label = tk.Label(canvas, text='foo')
label.pack()
root.mainloop()
如果您可以使用grid
方法,则使用row/column configure
和sticky
参数将执行剩余的工作。我不太了解pack
。
答案 1 :(得分:1)
你也可以这样做:
root = tk.Tk()
root.wm_minsize(400,400)
label = tk.Label(root, text='foo')
label.pack()
但是你会失去在400x400下调整窗口大小的能力。 还有这种可能性,但我不确定它是否有效:
root = tk.Tk()
root.resizable(width=False, height=False)
label = tk.Label(canvas, text='foo')
label.pack()