python - tab - ttk style




如何在Treeview中編輯標題的樣式(Python ttk) (2)

您可以使用默認命名字體“TkHeadingFont”來更改Treeview標題中使用的字體。

例如:

font.nametofont('TkHeadingFont').configure(size = 15)

我試圖使用ttk.Treeview做一個可排序的表(按tkinter 有一個表部件?https://www.daniweb.com/software-development/python/threads/350266/creating-table-in-蟒蛇 )。

讓它工作很容易,但我有一些與造型有關的問題。 Treeview標題的默認樣式是白色背景上的黑色文本,這很好。 不過,在我使用的代碼中:

ttk.Style().configure(".", font=('Helvetica', 8), foreground="white")

格式化我的GUI。 這個總體樣式也會影響Treeview小部件的標題。 因為默認的標題背景是白色的,所以我看不到文字(除非將鼠標懸停在標題上,這會使它變成淺藍色)。

通常情況下,我會重寫一個小部件的樣式使用標籤來改變背景或前景,但我不能為我的生活弄清楚如何調整TreeView標題! ttk.Treeview(...)不接受任何標籤,而ttk.Style()。configure(“Treeview”,...)沒有效果。 當使用widget.insert(...)時,只有Treeview項目顯示接受標籤。

這讓我感到困惑,因為總體ttk.Style().configure(“。”,...) 確實會影響Treeview標題,所以應該可以對它們應用一個標籤。

有誰知道如何改變Treeview標題的風格?

以下是最低工作示例。 請注意,該標籤適用於項目,但不適用於標題,Treeview樣式不起作用,“。” 風格確實有一個作用。 我在Windows 7上使用Python 2.7,以防有所作為。

    from Tkinter import *
    import ttk

    header = ['car', 'repair']
    data = [
    ('Hyundai', 'brakes') ,
    ('Honda', 'light') ,
    ('Lexus', 'battery') ,
    ('Benz', 'wiper') ,
    ('Ford', 'tire')]

    root = Tk()
    frame = ttk.Frame(root)
    frame.pack()
    table = ttk.Treeview(frame, columns=header, show="headings")
    table.pack()

    ## table.tag_configure('items', foreground='blue')
    ## ttk.Style().configure("Treeview", background='red', foreground='yellow')
    ## ttk.Style().configure(".", font=('Helvetica', 8), foreground="white")

    for col in header:
        table.heading(col, text=col.title(), command=lambda c=col: sortby(table, c, 0))
    for item in data:
        table.insert('', 'end', values=item, tags=('items',))

    def sortby(tree, col, descending):
        """sort tree contents when a column header is clicked on"""
        # grab values to sort
        data = [(tree.set(child, col), child) \
            for child in tree.get_children('')]
        # if the data to be sorted is numeric change to float
        #data =  change_numeric(data)
        # now sort the data in place
        data.sort(reverse=descending)
        for ix, item in enumerate(data):
            tree.move(item[1], '', ix)
        # switch the heading so it will sort in the opposite direction
        tree.heading(col, command=lambda col=col: sortby(tree, col, \
            int(not descending)))

    root.mainloop()

這是我在哪里工作 -

style = ttk.Style()
style.configure(".", font=('Helvetica', 8), foreground="white")
style.configure("Treeview", foreground='red')
style.configure("Treeview.Heading", foreground='green') #<----

http://www.tkdocs.com/tutorial/styles.html





ttk