鱼C论坛

 找回密码
 立即注册
查看: 1999|回复: 4

[已解决]请教一个关于tkinter 窗口内部组件对齐的问题

[复制链接]
发表于 2021-2-2 22:15:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
from tkinter import *

tool = Tk()


Label(tool,text='这是五个字',bg='blue').grid(row=0)
Label(tool,text='俩字',bg='blue').grid(row=1)
Label(tool,text='三个字',bg='blue').grid(row=2)
Label(tool,text='我想四个',bg='blue').grid(row=3)
Label(tool,text='一',bg='blue').grid(row=4)
Label(tool,text='还是三',bg='blue').grid(row=5)
Label(tool,text='有点像四',bg='blue').grid(row=6)



mainloop()
这个代码里的几个Label大小不一,看起来很难看,想要全部都左对齐,或者右对齐的话该怎么设置啊
这个跟在一个Label里设置文字左对齐好像不一样
最佳答案
2021-2-3 12:03:19
本帖最后由 Daniel_Zhang 于 2021-2-3 16:25 编辑
lxx213 发表于 2021-2-3 09:37
不行啊 这样出来的按钮是一样大了,可是字还是不齐啊,我想要每行字都左对齐或者右对齐


那就加上一个 anchor 进行对齐,anchor 的值有 n, ne, e, se, s, sw, w, nw, or center 这几个选项,我这里选的是 w 也就是左对齐
from tkinter import *

tool = Tk()

Label(tool,text='这是五个字',bg='blue',width = 20, anchor = "w").grid(row=0)
Label(tool,text='俩字',bg='blue', width = 20, anchor = "w").grid(row=1)
Label(tool,text='三个字',bg='blue',width = 20, anchor = "w").grid(row=2)
Label(tool,text='我想四个',bg='blue',width = 20, anchor = "w").grid(row=3)
Label(tool,text='一',bg='blue',width = 20, anchor = "w").grid(row=4)
Label(tool,text='还是三',bg='blue',width = 20, anchor = "w").grid(row=5)
Label(tool,text='有点像四',bg='blue',width = 20, anchor = "w").grid(row=6)

mainloop()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-2-2 22:30:19 | 显示全部楼层
grid中添加一个参数sticky,该参数设置位置,可以使用 N, E, S, W 以及它们的组合来定位(EWSN代表东西南北,上北下南左西右东)
from tkinter import *

tool = Tk()


Label(tool,text='这是五个字',bg='blue').grid(row=0, sticky=W)
Label(tool,text='俩字',bg='blue').grid(row=1, sticky=W)
Label(tool,text='三个字',bg='blue').grid(row=2, sticky=W)
Label(tool,text='我想四个',bg='blue').grid(row=3, sticky=W)
Label(tool,text='一',bg='blue').grid(row=4, sticky=W)
Label(tool,text='还是三',bg='blue').grid(row=5, sticky=W)
Label(tool,text='有点像四',bg='blue').grid(row=6, sticky=W)



mainloop()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-2 23:50:31 | 显示全部楼层
本帖最后由 Daniel_Zhang 于 2021-2-2 23:52 编辑

这个问题只需要使用 width 属性将 Label撑开就可以了

因为 width 默认是跟随 text 的字符数量(长度)进行设置的,所以会出现当 Label 的 text 的长度不同时,不同的 Label 的显示长度不同。如果你强制设置一个指定的 width 的话,所有的 Label 的 width 一样的情况下,就会自动对齐了
from tkinter import *

tool = Tk()

Label(tool,text='这是五个字',bg='blue',width = 20).grid(row=0)
Label(tool,text='俩字',bg='blue', width = 20).grid(row=1)
Label(tool,text='三个字',bg='blue',width = 20).grid(row=2)
Label(tool,text='我想四个',bg='blue',width = 20).grid(row=3)
Label(tool,text='一',bg='blue',width = 20).grid(row=4)
Label(tool,text='还是三',bg='blue',width = 20).grid(row=5)
Label(tool,text='有点像四',bg='blue',width = 20).grid(row=6)



mainloop()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-3 09:37:20 | 显示全部楼层
不行啊 这样出来的按钮是一样大了,可是字还是不齐啊,我想要每行字都左对齐或者右对齐
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-3 12:03:19 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Daniel_Zhang 于 2021-2-3 16:25 编辑
lxx213 发表于 2021-2-3 09:37
不行啊 这样出来的按钮是一样大了,可是字还是不齐啊,我想要每行字都左对齐或者右对齐


那就加上一个 anchor 进行对齐,anchor 的值有 n, ne, e, se, s, sw, w, nw, or center 这几个选项,我这里选的是 w 也就是左对齐
from tkinter import *

tool = Tk()

Label(tool,text='这是五个字',bg='blue',width = 20, anchor = "w").grid(row=0)
Label(tool,text='俩字',bg='blue', width = 20, anchor = "w").grid(row=1)
Label(tool,text='三个字',bg='blue',width = 20, anchor = "w").grid(row=2)
Label(tool,text='我想四个',bg='blue',width = 20, anchor = "w").grid(row=3)
Label(tool,text='一',bg='blue',width = 20, anchor = "w").grid(row=4)
Label(tool,text='还是三',bg='blue',width = 20, anchor = "w").grid(row=5)
Label(tool,text='有点像四',bg='blue',width = 20, anchor = "w").grid(row=6)

mainloop()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 16:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表