如何实现高度为2的Tkinter Text文本框文本垂直居中?
Tkinter的Text组件原生未提供垂直居中的直接配置参数,你之前使用的justify仅用于控制水平对齐,且你未给插入的文本绑定对应tag,因此配置无法生效。
方案1:固定高度场景适配(适配你当前需求)
你已将Text高度设为2,可通过配置tag的上下边距实现垂直居中,修改后的代码如下:
entry = tk.Text(self.frame, height=2, width=20, font=('Corsiva Hebrew', '20'), borderwidth=3, relief='solid') # 新增spacing1(段前间距)和spacing3(段后间距),两者数值相等即可实现垂直居中 entry.tag_configure("center", justify='center', spacing1=12, spacing3=12) # 插入文本时必须指定应用center标签,配置才会生效 entry.insert("end", "你要显示的文本内容", "center") # 可选:如果允许用户输入,绑定按键事件保证新输入内容也自动应用格式 def apply_tag(event): entry.tag_add("center", "1.0", "end") entry.bind("<KeyRelease>", apply_tag)
说明:可根据实际显示效果微调spacing1和spacing3的数值,直到文本完全垂直居中即可。
方案2:动态高度通用方案
如果后续需要适配Text高度变化、文本行数不固定的场景,可以外层套固定尺寸的Frame实现:
# 外层Frame承担原有Text的边框和固定尺寸属性 outer_frame = tk.Frame(self.frame, width=300, height=100, borderwidth=3, relief='solid') outer_frame.pack(padx=10, pady=10) outer_frame.pack_propagate(False) # 锁定Frame尺寸,不随子组件变化 # Text组件去掉边框,在Frame中居中放置 entry = tk.Text(outer_frame, width=20, font=('Corsiva Hebrew', '20'), borderwidth=0) entry.tag_configure("center", justify='center') entry.pack(expand=True, anchor='center') entry.insert("end", "测试文本", "center")
内容的提问来源于stack exchange,提问作者Lzypenguin
相关产品推荐
相关产品推荐

