首页 > 解决方案 > 如果窗口失去焦点,配置 `ttk.Syle().configure` 的效果会丢失

问题描述

我有这个代码(或多或少的最小工作示例):

import tkinter as tk
from tkinter import ttk

class App(ttk.Frame):

    def __init__(self, parent, *args, **kwargs):
        ttk.Frame.__init__(self, parent)
        self.parent = parent

        # Create Treeview
        self.tree = ttk.Treeview(self.parent, column=('A', 'B'), selectmode='none', height=7)
        self.tree.pack(expand=True, fill='both', side='top')
        ttk.Style().configure("Treeview", background="#1C1C1C", fieldbackground="#1C1C1C", foreground="white")

        # Setup column heading
        self.tree.heading('#0', text=' Items', anchor='center')
        self.tree.heading('#1', text=' A', anchor='center')
        self.tree.heading('#2', text=' B', anchor='center')

        # Insert some rows
        self.tree.insert('', 'end', text="First item", value=("A's value", "B's value"))
        self.tree.insert('', 'end', text="Second item", value=("A's value", "B's value"))

if __name__ == '__main__':
    root = tk.Tk()
    root.geometry('900x600+300+300')
    App(root)
    root.mainloop()

请注意,我将背景颜色更改为近乎黑色的颜色,并将前景(字体颜色)更改为白色。
这种工作,除了一个细节,即当结果窗口没有焦点时,字体(前景)仍然显示为黑色,窗口几乎不可读。
像这样:

重点:

在此处输入图像描述

没有焦点:

在此处输入图像描述

这对我来说还不够好,因为有时人们希望在专注于另一个窗口的同时从一个窗口阅读。
但是,关于这个小部件的配置,也许这​​已经是最好的了。
还是我错过了什么?

标签: pythonmacostkintertreeviewttk

解决方案


推荐阅读