如何解决更改TTK小部件文本颜色
您将需要创建一个自定义样式,然后将该样式应用于窗口小部件。要创建自定义样式,请首先获取的实例ttk.Style
,然后使用该configure
方法从现有样式中派生新样式。下面的示例创建一个名为“
Red.TCheckbutton”的新样式:
style = ttk.Style()
style.configure("Red.TCheckbutton", foreground="red")
接下来,当您想要更改颜色时,只需将此样式与小部件关联即可:
my_checkbutton.configure(style="Red.TCheckbutton")
学习如何使用ttk样式的最佳资源是tkdocs.com。具体来说,http://www.tkdocs.com/tutorial/styles.html。
这是一个完整的工作示例:
import ttk
import Tkinter as tk
class ExampleApp(tk.Frame):
def __init__(self, *args, **kwargs):
tk.Frame.__init__(self, *args, **kwargs)
self.var1 = tk.StringVar()
self.var2 = tk.StringVar()
f1 = ttk.Frame(self)
red_button = ttk.Button(f1, text="Red", command=self.make_red)
default_button = ttk.Button(f1, text="Default", command=self.make_default)
default_button.pack(side="left")
red_button.pack(side="left")
f2 = ttk.Frame(self)
self.cb_one = ttk.Checkbutton(f2, text="Option 1", variable=self.var1,
onvalue=1, offvalue=0)
self.cb_two = ttk.Checkbutton(f2, text="Option 2", variable=self.var2,
onvalue=1, offvalue=0)
self.cb_one.pack(side="left")
self.cb_two.pack(side="left")
f1.pack(side="top", fill="x")
f2.pack(side="top", fill="x")
style = ttk.Style()
style.configure("Red.TCheckbutton", foreground="red")
def make_red(self):
self.cb_one.configure(style="Red.TCheckbutton")
self.cb_two.configure(style="Red.TCheckbutton")
def make_default(self):
self.cb_one.configure(style="TCheckbutton")
self.cb_two.configure(style="TCheckbutton")
if __name__ == "__main__":
root = tk.Tk()
ExampleApp(root).pack(fill="both", expand=True)
root.mainloop()
解决方法
我已经进行了全面搜索,但是还没有找到一个简单的示例,该示例显示如何更改ttk小部件样式的次要元素并动态地应用它(在创建小部件之后)。
我有一些代表某些配置项目的ttk检查按钮,还有一个用于更新远程系统的ttk按钮。复选按钮被初始化为远程系统的状态。
如果用户修改了任何选中按钮,我希望选中按钮文本和更新按钮文本都变为红色,以提醒用户选中按钮状态不再与远程状态匹配,并且应该按下更新按钮以发送修改到远程系统的配置。
当按下更新按钮时,更新按钮和所有复选按钮的文本颜色将恢复为黑色。
我知道这是可能的(并且可能很容易),但是如何?
编辑:修改背景颜色也可以。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。