Tkinter使用grid布局时Label控件无法定位到屏幕右上角问题
问题原因
你当前在同一个窗口父容器中混用了place和grid两种布局管理器,且没有给grid的列配置拉伸权重:
- grid默认所有列宽仅匹配内部控件的内容宽度,未配置权重的列不会自动拉伸占满窗口剩余宽度,所以哪怕你指定更大的列号,空列宽度为0,控件自然会集中在窗口中部。
- 同个父容器混用不同布局管理器很容易出现布局逻辑冲突,不推荐这么用。
解决方案
推荐和你其他控件的布局逻辑统一,直接用place实现右上角对齐,修改text控件的布局代码即可:
把原来的
text.grid(row = 0, column=1, sticky=E,)
替换为:
# relx=1.0 对应x坐标在窗口最右侧,anchor='ne' 表示用控件的右上角作为锚点对齐 text.place(relx=1.0, rely=0.0, anchor='ne')
如果需要调整控件和顶部、右侧边缘的距离,修改rely的数值(取值0~1,越大越靠下),或者直接指定x、y的像素值即可。
如果一定要使用grid布局实现,需要先给对应列配置拉伸权重:
在创建text控件前添加如下代码:
# 给第1列配置权重,让该列自动拉伸占满窗口剩余宽度 window.grid_columnconfigure(1, weight=1)
原来的text.grid(row = 0, column=1, sticky=E)代码保留即可生效。
内容的提问来源于stack exchange,提问作者Phantom Gaming
相关产品推荐
相关产品推荐

