1

您如何更改某些小部件的默认 Tkinter kwargs 值?

我知道您可以使用 tk_setPalette(theme) 设置通用 Tkinter 主题,以便它计算并覆盖默认值并尝试使用与新主题最匹配的颜色,但我想要具有更多控制权的东西。

例如,假设我想轻松更改 Tkinter 小部件的背景颜色,我会执行以下操作:

import Tkinter as tk
COLOR = 'blue' #This would be in some constant or setting modules

class CustomButton(tk.Button):
    def __init__(self, root, **options):
        tk.Button.__init__(self, root, bg=COLOR, **options)

然后,如果在某个时候我想将背景颜色从蓝色更改为红色,我只需要编辑我的 setting.py 模块。(背景是一个例子,我想轻松更改任何**kwargs)

我确信有更好的方法可以做到这一点,并且可以在某个地方设置默认小部件值,而无需覆盖包装类中的每个小部件......

4

2 回答 2

3

我知道几年前有人问过这个问题,但是对于偶然发现此线程的相同问题的任何人,以下是如何为小部件合并通用设置的示例:

my_options = {"bg" : "gray60", "font" : ("Tahoma", 20)}

tk.Label(root, text = "Same background", **my_options).grid(row = 1, column = 1)
tk.Button(root, text = "and font.", **my_options).grid(row = 1, column = 2, padx = (5, 0))

请注意,该选项必须是一个字符串,但该值与往常一样(即颜色为字符串,高度为整数)。

于 2015-09-25T05:36:13.263 回答
1

没有任何内置功能可以为您执行此操作,但只需几行代码即可实现。您可以在运行时使用 config(或配置)方法更改任何属性,因此,例如,您可以执行以下操作:

def resetUI(self, bg=None, fg=None):
    for button in list_of_buttons:
        button.config(background=bg, foreground=fg)
于 2013-08-12T19:17:29.593 回答