如何在PySimpleGUI的sg.Text()中为单词单个字母添加粗体
在PySimpleGUI中实现单个字母加粗且无间距的方法
方案1:调整Text组件内边距消除间距
默认sg.Text会自带内边距,这就是两个组件间出现空格的原因。只要给两个Text组件都设置pad=(0,0),同时保证字体大小一致,就能实现无缝衔接的单个字母加粗效果:
import PySimpleGUI as sg layout = [ [ sg.Text("H", font=("Arial", 12, "bold"), pad=(0,0)), sg.Text("ello", font=("Arial", 12), pad=(0,0)) ] ] window = sg.Window("单个字母加粗示例", layout) while True: event, values = window.read() if event == sg.WIN_CLOSED: break window.close()
方案2:用tkinter原生Text组件实现富文本
如果需要处理更复杂的多段样式文本,直接嵌入tkinter的Text组件更灵活,它支持给任意片段单独设置样式:
import PySimpleGUI as sg import tkinter as tk layout = [ [sg.TkCanvas(key="-CANVAS-")] ] window = sg.Window("富文本示例", layout, finalize=True) # 获取容器并创建tkinter Text组件 canvas = window["-CANVAS-"].TKCanvas text_widget = tk.Text(canvas, font=("Arial", 12), borderwidth=0) text_widget.pack() # 插入文本并给单个字母加黑 text_widget.insert(tk.END, "H") text_widget.tag_add("bold_tag", "1.0", "1.1") text_widget.tag_config("bold_tag", font=("Arial", 12, "bold")) text_widget.insert(tk.END, "ello") # 锁定文本防止误编辑 text_widget.config(state=tk.DISABLED) while True: event, values = window.read() if event == sg.WIN_CLOSED: break window.close()
内容的提问来源于stack exchange,提问作者jsmith
相关产品推荐
相关产品推荐

