所以,这是我面临的问题的简化形式:
以下代码生成的 Canvas 大小刚好足以容纳标签,即使它配置为 400 x 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()
如果省略最后两行,则 Canvas 的大小就是我期望的大小(400 x 400),但它不包含标签,而这是我希望它包含的内容。
正如我所说,这是我的问题的简化形式,我实际上想将几个小部件放入 Canvas 中,但这种行为是我的问题的原因。有没有办法使 Canvas 达到我想要的大小(以像素为单位)并将其用作其他小部件的主版?
最佳答案
您可以做的是设置根窗口的大小:
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
的了解还不够。
关于python - 在 tkinter 中,当 Canvas 用作另一个小部件的主版时, Canvas 大小设置似乎停止工作。有办法解决这个问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31145798/