如何在text_box控件中自定义设置插入文本的显示位置
问题原因
你原来的写法存在两个核心问题:
- Tkinter的Text组件索引格式为
行号.列号,行号从1开始计数,插入第一条内容后如果没有手动插入换行符,不存在第二行,所以"2.2"这个索引是无效的,内容会直接拼接在现有文本末尾。 - 要实现标题居中、段落间隔的排版效果,需要通过Text组件的tag机制自定义文本样式,直接插入文本无法自带对齐、间距属性。
解决方法
先给Text组件配置对应样式的tag,再按顺序插入内容并绑定对应tag即可,参考代码如下:
# 第一步:配置样式tag # 标题样式:居中对齐,段前、段后各留10px间距,可按需调整数值 show_both_documents_text_box.tag_configure("center_title", justify="center", spacing1=10, spacing3=10) # 正文样式:默认左对齐,段后留20px间距用来分隔内容 show_both_documents_text_box.tag_configure("normal_content", spacing3=20) # 第二步:按顺序插入内容 # 插入第一个文档标题,绑定center_title样式 show_both_documents_text_box.insert("end", "Document 1\n", "center_title") # 插入第一个文档正文,绑定normal_content样式 show_both_documents_text_box.insert("end", "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n\n", "normal_content") # 插入第二个文档标题 show_both_documents_text_box.insert("end", "Document 2\n", "center_title") # 插入第二个文档正文 show_both_documents_text_box.insert("end", "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", "normal_content") # 第三步:禁用控件 show_both_documents_text_box.config(state='disabled')
如果需要调整文本的左右缩进、字体大小颜色,都可以在tag_configure方法里添加对应参数实现。
内容的提问来源于stack exchange,提问作者GuwniakSmierdzoncy
相关产品推荐
相关产品推荐

