2016-08-21 87 views
6

我正在使用ttk treeviews构建Python GUI应用程序。在Linux上,当Treeitem具有子项时,它会显示一个箭头以显示该行可以展开。我想隐藏这个指标箭头(我使用其他方式来暗示该行可以展开)。我怎样才能做到这一点?如何在Python GUI中隐藏ttk Treeitem指标

如果我运行Style().element_names(),我看到有一个Treeview元素和一个Treeitem.indicator元素。如果我运行Style().configure("Treeview", padding=50),我会在创建树视图时看到应用填充样式,所以我确信任何可以正确应用于Treeitem.indicator的样式都应该可见。

运行Style().element_options("Treeitem.indicator"),我看到('-foreground', '-indicatorsize', '-indicatormargins')。运行Style().lookup("Treeitem.indicator", "foreground")给了我"#000000",所以看起来值初始化了。如果我尝试Style().configure("Treeview", foreground="#123456")我没有看到指示箭头改变颜色,但运行Style.lookup("Treeitem.indicator", "foreground")显示我如预期的"#123456"。我的计划是将指标设置为0以使箭头完全消失,但我甚至无法成功编辑颜色。我在这里做错了什么,是否有更好的方法来隐藏指标?万一它很重要,我正在运行Python 3.5.0。

回答

3

不知道你是否想过它。

创建新样式并对其进行配置时,必须将模板的名称更改为"."。这改变了treeview的根风格。您还需要指定一个主题,即使它是default。所以它看起来像这样:

s = ttk.Style() 
s.configure(".", indicatorsize = '0') 
s.theme_use('default') 

然后当你创建树视图时,你不应该指定一个样式。

让我知道这是否适合你。

编辑:由于这是正在downvoted因为某些原因,我会澄清:

代码的风格部分注释掉:

#s = ttk.Style() 
    #s.configure(".", indicatorsize = '0') 
    #s.theme_use('clam') 

    j = ttk.Treeview(self.parent) 
    j.place(relx = 0.5, rely = 0.5, anchor = "center") 
    j.insert("",1,"jacob",text = "Jacob") 
    j.insert("jacob",1,"marcus",text = "Marcus") 
    j.insert("jacob",2,"tony",text = "Tony") 
    j.insert("jacob",3,"ricardo",text = "Ricardo") 

给我们

enter image description hereenter image description here

带有款式部分的代码

s = ttk.Style() 
s.configure(".", indicatorsize = '0') 
s.theme_use('clam') 

j = ttk.Treeview(self.parent) 
j.place(relx = 0.5, rely = 0.5, anchor = "center") 
j.insert("",1,"jacob",text = "Jacob") 
j.insert("jacob",1,"marcus",text = "Marcus") 
j.insert("jacob",2,"tony",text = "Tony") 
j.insert("jacob",3,"ricardo",text = "Ricardo") 

enter image description hereenter image description here

希望这有助于。

编辑2: 添加了s.theme_use('clam')行,因为您需要指定您正在使用哪个主题。它也适用于classicdefault,但由于某种原因不适用于vista主题。

+0

不知道为什么这是downvoted。我使用这段代码,并设法使指标在我的测试树视图中完全消失。 – RBuntu

+0

因为我在Windows上试过你的代码,所以没有按预期工作,这是我压低了你的因素。无论如何,现在你已经证明它可以在linux上运行我会让你赞不绝口 – BPL

+0

@BPL这不是Linux,我在Windows 7上运行代码。我不完全确定为什么它不适合你。我做了一些更多的动作,看起来你必须指定要使用的主题,然后才能更改指标大小。它似乎与's.theme_use('default')',以及其他主题,如经典和蛤蜊。但是,它似乎不适用于Vista主题。 – RBuntu