同一程序中使用多个Tkinter Treeview,修改单个样式所有组件都变更怎么办
问题原因
你当前直接对"Treeview"这个全局默认样式做配置,所有未单独指定样式的Treeview组件都会默认继承这套配置,这就是多个组件样式同步变更的核心原因。
解决方法
ttk控件的自定义样式需要遵循[自定义标识].[控件类名]的命名规则,不同样式的Treeview单独命名即可实现隔离,操作步骤如下:
- 给每个不同样式的Treeview定义专属的样式名,比如红色背景款命名为
Red.Treeview、黑色背景款命名为Black.Treeview,不要直接修改默认的Treeview样式 - 实例化Treeview时,通过
style参数绑定对应的自定义样式名
代码示例
修改后的单组Treeview代码如下:
style = ttk.Style() # 针对专属样式名做配置,不会影响全局默认样式 style.configure("Red.Treeview",background="Black", foreground="White",fieldbackground="red") style.map('Red.Treeview', background=[('selected','#3c3737')],foreground=[('selected','white')]) # 实例化时指定对应样式 my_tree = ttk.Treeview(my_canvas2,height=1000, style="Red.Treeview")
其余三个Treeview按照同样逻辑修改自定义样式名和对应的style参数即可,不同样式之间不会互相干扰。
内容的提问来源于stack exchange,提问作者Man_Like_Dave
相关产品推荐
相关产品推荐

