微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

更改ttk.Style会从ttk.Treeview中删除高亮显示

如何解决更改ttk.Style会从ttk.Treeview中删除高亮显示

我曾尝试构建一个树状视图以将数据存储在tkinter中,但不幸的是,使用ttk更改了样式。Style完全消除了突出显示行的功能以及悬停时突出显示列的功能

有什么办法可以解决这个问题?

示例:

import tkinter as tk
from tkinter import ttk

inp = [{'Currency': 'EUR','Volume': '100','Country': 'SE'},{'Currency': 'GBP','Volume': '200',{'Currency': 'CAD','Volume': '300',{'Currency': 'EUR','Volume': '400','Country': 'DK'},]


class Application(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        self.title("Volume")

        self.tree = ttk.Treeview(self,show='headings')
        columns = list(inp[0].keys())

        self.tree["columns"] = columns
        self.tree.pack(expand=tk.TRUE,fill=tk.BOTH)

        for i in columns:
            self.tree.column(i,anchor=tk.W)
            self.tree.heading(i,text=i,anchor=tk.W)

        for row in inp:
            self.tree.insert("","end",values=list(row.values()))


root = Application()
style = ttk.Style()
style.theme_create('my_style',parent='clam')
style.theme_use('my_style')
root.mainloop()

解决方法

由于某种原因,我不知道,似乎创建的主题没有继承自parent。因此,除了其他设置之外,您的主题还缺少树视图行的动态样式。

为避免这种情况,我认为仅修改现有主题会更简单:

style = ttk.Style()
style.theme_use('clam')

style.configure(...)
style.map(...)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。