Python 3.6 Tkinter:如何修改预定义Label的字体类型、大小与颜色
嘿,我来帮你搞定Label字体属性修改的功能!这里有两个关键要点需要注意,我一步步给你讲清楚:
1. 先修正Label的初始化代码(重要!)
你之前创建leftLabel的时候直接链式调用了.pack(),这会导致self.leftLabel实际上是None(因为pack()方法返回的是None),后续没法调用config()来修改属性。所以得把创建和布局分开写:
# 修正后的Label初始化 self.defaultLeftStringValue = StringVar() self.defaultRightStringValue = StringVar() self.leftFrame = tf.TextInFrame(self.main_container, bg='white', height=128, width=128) self.leftFrame.place(x=10, y=10) self.leftFrame.pack_propagate(False) # 拆分创建和布局,让self.leftLabel指向Label实例 self.leftLabel = Label(self.leftFrame, textvariable=self.defaultLeftStringValue) self.leftLabel.pack() # 如果有rightLabel,同样要这么修正 # self.rightLabel = Label(self.rightFrame, textvariable=self.defaultRightStringValue) # self.rightLabel.pack()
2. 在doEnter方法中添加字体属性修改逻辑
现在你已经获取了字体类型、大小和颜色参数,只需要调用Label的config()方法就能直接修改属性了。把下面的代码加到doEnter方法里合适的位置(比如设置完文本之后):
def doEnter(self): thisFontSize = self.tkvarFontSize.get() thisFontColor = self.tkvarFontFgColor.get() thisFontType = self.tkvarFontType.get() self.leftFrame.config(bg=self.tkvarFontBgColor.get()) self.rightFrame.config(bg=self.tkvarFontBgColor.get()) # 创建Font对象 font = Font(family=thisFontType, size=thisFontSize) splitText = self.text_entry.get() self.splitTextLeft = " " self.splitTextRight = " " if ";" in splitText: splitText = splitText.split(";") self.splitTextLeft = splitText[0] self.splitTextRight = splitText[1] splitTextLeftLength = font.measure(self.splitTextLeft) splitTextRightLength = font.measure(self.splitTextRight) splitTextHeight = font.metrics("linespace") self.defaultLeftStringValue.set(self.splitTextLeft) self.defaultRightStringValue.set(self.splitTextRight) # 核心:修改Label的字体和前景色 self.leftLabel.config(font=font, fg=thisFontColor) # 如果有rightLabel,同步修改 # self.rightLabel.config(font=font, fg=thisFontColor)
这样,当用户选择完字体参数并触发doEnter方法时,Label的字体类型、大小和文字颜色就会跟着更新了。
内容的提问来源于stack exchange,提问作者Benjamin Levy
相关产品推荐
相关产品推荐

