ThemedWidget分类名称的由来就是这类控件可以统一切换控件的风格。以下视频就是前文说明的FileBrower增加切换主题的例子。注意观察切换主题时,Scrollbar,PanedWindow,Treeview风格的变化。
本例代码的绝大部分来自上一篇文章,以下只说明和主题切换有关的部分。。首先构建一个主题菜单。
theme_menu = Menu(top_menu, tearoff=False)top_menu.add_cascade(label='Theme', menu=theme_menu)
构建一个字符串变量以保存当前的主题名称,其初始值为当前的主体名称。
theme = StringVar()theme.set(Style().theme_use())
利用Sytle().theme_names方法获取系统中已经注册的主题名称列表并生成选择每个主题的菜单项。
for t in Style().theme_names(): theme_menu.add_radiobutton(label=t, value=t, variable=theme)
为主题变量增加监视函数,以便在用户选择某个菜单项时切换主题。
def theme_changed(*arg): Style().theme_use(theme.get())theme.trace_variable('w', theme_changed)
完整代码可以从以下地址下载:
https://github.com/xueweiguo/TkinterPrimer/blob/master/Sample/32%20ThemeWidget.py
觉得本文有帮助?请分享给更多人。
阅读更多更新文章,请关注微信公众号【面向对象思考】