首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否有一种方法可以刷新已重新配置小部件的tkinter框架?

是否有一种方法可以刷新已重新配置小部件的tkinter框架?
EN

Stack Overflow用户
提问于 2022-01-20 01:19:37
回答 3查看 719关注 0票数 0

我希望允许用户配置应用程序的外观(背景颜色、字体、字体大小和颜色、按钮颜色等)。我已经将所有默认设置保存到一个配置文件中,该程序将该文件解释并保存到类中的变量中,以便于在函数之间进行访问。现在,我可以将用户所做的更改保存到配置文件中,当用户关闭并重新打开应用程序时,这些更改将被反映出来,但是我希望这些更改是即时的,所以我尝试了如下所示:

代码语言:javascript
运行
复制
import tkinter as tk

class SetColor:
    def __init__(self, color):
        self.color = 'green'
current = SetColor('green')

root = tk.Tk()

lbl_color = tk.Label(root, text='Choose button color')
lbl_color.grid(row=0, column=0, pady=5, padx=2)

btn_red = tk.Button(root, text='Red', bg=current.color, command=lambda:update_color('red'))
btn_red.grid(row=0, column=1, pady=5, padx=2)

btn_green = tk.Button(root, text='Green', bg=current.color, command=lambda:update_color('green'))
btn_green.grid(row=0, column=2, pady=5, padx=2)

btn_blue = tk.Button(root, text='Blue', bg=current.color, command=lambda:update_color('blue'))
btn_blue.grid(row=0, column=3, pady=5, padx=2)

def update_color(color):
    current.color = color
    #THIS is where I'm wondering if there's a way to refresh without individually updating each widget as I've done below
    btn_red.config(bg=current.color)
    btn_green.config(bg=current.color)
    btn_blue.config(bg=current.color)       
    
root.mainloop()

这确实有效,但在我的实际应用程序中,需要更新的小部件比这个^示例中的要多。所以我有种感觉,我错过了一些东西,或者用错误的方式来做这件事。任何非常感谢的帮助:)

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70779744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档