python - 在 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()
这给出了这个结果:
可以看到画布已经把框架推到窗外了
但是,当它只是框架时,框架很好地适合窗口:
当它只是画布时,画布会推到窗外:
是什么导致了这种尺寸差异,我该如何处理?有没有正确的方法来设置画布的大小?
解决方案
除了 width 参数之外,还有另外两个参数可以控制画布的宽度:borderwidth
和highlightthickness
. 这两个都可能具有非零默认值,具体取决于您的平台。
此外,几何管理器还可能根据选项和其他因素对宽度和高度做出贡献。
要获得精确为 200 像素宽和 400 像素高的画布,请将其他值设置为零,并且不要使用可能会限制或扩展小部件大小的几何管理器选项。
canvas = tk.Canvas(root, width=200, height=400, borderwidth=0, highlilghtthickness=0)
推荐阅读
- ruby-on-rails - PG ConnectionBad 无法连接到服务器
- c# - C# MVC .Net Core 表单,强类型表单,不工作(404 错误)
- python - Azure Spot 实例创建问题
- python-3.x - 使用 python 进行多部分/表单数据发布请求
- python - 如何更改 Pygame 坐标系,使窗口的中心为 (0,0)?
- javascript - JQuery为表单验证val()函数查找具有重复值的所有元素不返回用户输入的值
- c++ - 我在 C++ 控制台中制作了一个移动的屏幕保护程序,但是当它到达角落时有一个错误
- javascript - 以短方式返回数组的一半
- python - 使用 SSL 公钥/私钥在 Windows 上为 Flask 应用程序提供服务员
- css - 如何在 div 的同一行中对齐内容和箭头?