如何修改CustomTkinter Textbox行样式?解决tag_configure缩放报错问题
解决CTkTextbox用tag_configure设置字体时的缩放报错问题
问题原因
CTkTextbox集成了CustomTkinter的DPI缩放逻辑,直接使用("Arial", 16)这种原生字体格式设置标签字体,会和内部缩放机制冲突,触发限制报错。
解决方法
用CustomTkinter提供的CTkFont类创建字体,它会自动适配当前的DPI缩放,和CTkTextbox的渲染逻辑完全兼容。
修改后的完整代码
from customtkinter import CTkFont # 别忘了导入CTkFont # ... 你的其他初始化代码 ... self.test = CTkTextbox(scrollable_frame.scrollable_frame, corner_radius=20, width=400, height=100, border_width=2, bg_color=colur2, border_color=colur3, fg_color=colur2, text_color=colur3) self.test.grid(row=6, column=0, sticky="w") self.test.insert(tk.END, "News\n", "1") self.test.insert(tk.END, "Something about news comes here...\n", "2") # 用CTkFont创建适配缩放的字体 title_font = CTkFont(family="Arial", size=16) self.test.tag_configure("1", font=title_font) self.test.configure(state="disabled")
额外说明
如果不想用CTkFont,也可以手动获取控件的缩放因子调整字体大小,但这种方式不如CTkFont省心:
scaling = self.test._get_scaling() # 获取当前缩放值 self.test.tag_configure("1", font=("Arial", int(16 * scaling)))
但更推荐用CTkFont,它能自动跟随全局缩放设置变化,不用手动维护。
内容的提问来源于stack exchange,提问作者matehorvath
相关产品推荐
相关产品推荐

