首页 > 解决方案 > 在 Tkinter 中设置画布大小的正确方法是什么?

问题描述

我正在尝试在 Tkinter 中构建一个简单的 GUI,但在将框架和画布并排放置时遇到了麻烦。画布似乎占用了比指定的宽度和高度更多的空间。

示例代码:

root = tk.Tk()
parent = tk.Frame(root)
parent.grid()
parent.master.geometry('400x400')
canvas = tk.Canvas(parent, width=200, height=400, relief='raised', borderwidth=5)
canvas.grid(row=0, column=0, sticky='nsew')
frame = tk.Frame(parent, width=200, height=400, relief='raised', borderwidth=5)
frame.grid(row=0, column=1, sticky='nsew')
parent.mainloop()

这给出了这个结果:

同一窗口中的画布和框架

可以看到画布已经把框架推到窗外了

但是,当它只是框架时,框架很好地适合窗口:

在此处输入图像描述

当它只是画布时,画布会推到窗外:

在此处输入图像描述

是什么导致了这种尺寸差异,我该如何处理?有没有正确的方法来设置画布的大小?

标签: pythontkinter

解决方案


除了 width 参数之外,还有另外两个参数可以控制画布的宽度:borderwidthhighlightthickness. 这两个都可能具有非零默认值,具体取决于您的平台。

此外,几何管理器还可能根据选项和其他因素对宽度和高度做出贡献。

要获得精确为 200 像素宽和 400 像素高的画布,请将其他值设置为零,并且不要使用可能会限制或扩展小部件大小的几何管理器选项。

canvas = tk.Canvas(root, width=200, height=400, borderwidth=0, highlilghtthickness=0)

推荐阅读