TTK按钮使用style.configure设置字体大小不生效问题求助
TTK按钮使用style.configure设置字体大小不生效问题求助
嘿,我看到你的问题了——用ttk.Style配置按钮字体大小没生效,这事儿我之前也碰到过,大概率是sv_ttk主题的加载顺序搞的鬼!
你现在的代码里,是先在menu类的__init__方法中配置了自定义样式big.TButton,之后才调用sv_ttk.set_theme("dark")。但sv_ttk的主题会重置所有ttk组件的默认样式(包括你自定义的样式),所以你提前写的样式配置直接被主题覆盖了,自然看不到效果。
给你两个可行的解决方案:
方案一:把样式配置移到主题设置之后
把全局的样式配置放在sv_ttk.set_theme之后,这样主题先加载完成,你再修改的样式就不会被覆盖了:
App = app() sv_ttk.set_theme("dark") # 在这里配置自定义样式 style = ttk.Style() style.configure('big.TButton', font=('Helvetica', 20)) App.mainloop()
记得把menu类里的style = ttk.Style()和style.configure('big.TButton', ...)删掉哦,避免重复配置。
方案二:在menu类中延迟配置样式(适合局部样式需求)
如果你希望样式只在menu框架里生效,可以在menu的__init__中,先确保主题已经加载,再重新配置样式。不过这种方式不如方案一简洁,更适合需要局部定制的场景:
class menu(ttk.Frame): def __init__(self, parent, controller): ttk.Frame.__init__(self, parent) # 主题加载完成后再配置样式 style = ttk.Style() style.configure('big.TButton', font=('Helvetica', 20)) label = ttk.Label(self, text="Welcome to the CSV Navi!", font=("Helvetica", 40)) label.pack(expand=True, pady=100) button = ttk.Button(self, text="Log In", style='big.TButton', command=lambda: controller.show_frame(logIn)) button.pack(side="left", expand=True, ipadx=100, ipady=100) # 如果想让Sign Up按钮也变大,记得加上style参数 button2 = ttk.Button(self, text="Sign Up", style='big.TButton', command=lambda: controller.show_frame(signUp)) button2.pack(side="left", pady=100, expand=True, ipadx=100, ipady=100)
另外提个小细节:你代码里ttk.Frame.__init__(self,parent,)后面多了个多余的逗号,虽然不影响运行,但可以删掉让代码更规范~
备注:内容来源于stack exchange,提问作者GhostaNero
相关产品推荐
相关产品推荐

