在使用Tkinter的Python 3.4中,以下用于更改我的Notebook中的选项卡颜色的代码使得在我看似无关的打开文件对话框中的按钮和内容的轮廓不存在。
style = Style();
style.theme_create("tabcolor", settings={"TNotebook.Tab": {"configure": {"background": self.tbgcolor, "foreground": self.tfgcolor }, "map": {"background": [("selected", self.atbgcolor)], "foreground": [("selected", self.atfgcolor)]}}});
style.theme_use("tabcolor");
为什么呢?我该如何解决这个问题?
这是带有问题的对话框的图像。请注意按钮上没有轮廓:
编辑:这也会导致文本小部件中的复选框即使在重新检查时也会显示为未选中。
答案 0 :(得分:0)
我终于找到了解决这个问题的方法。
首先,解决方案是配置样式和内容而不是制作主题。如果你制作一个主题,那就更容易出错。我认为主题是将Notebook样式应用于所有小部件,否则它只添加指定的样式,而其他所有内容都是空白的(不保留默认值)。对于原因我不是100%肯定,说实话,但我知道解决方案。使用它而不是制作和使用主题:
(self.d是一个包含颜色和内容的字典,不需要成为代码的一部分。)
Style().configure("TNotebook", background=self.d["tcolor"]); #This line isn't technically part of the answer, but people seeing this will likely want to know this, too (it changes the color of the tab bar portion without tabs on it).
Style().map("TNotebook.Tab", background=[("selected", self.d["atbgcolor"])], foreground=[("selected", self.d["atfgcolor"])]);
Style().configure("TNotebook.Tab", background=self.d["tbgcolor"], foreground=self.d["tfgcolor"]);
基本上,这是主题中的相同代码,但它不会影响它的所有内容(只是你想要它的东西)。我通过Python的帮助功能检查文档来找出这个答案。我看到了map方法(Style使用而不是字典),并试图进行翻译。它工作(这次)。