设置Tkinter默认小部件kwargs

2024-04-25 05:40:00 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我知道你可以用tk峈setpalete(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)

如果我想把背景颜色从蓝色改为红色,我只需要编辑我的设置.py模块。(背景就是一个例子,我想很容易地改变任何**kwargs)

我相信有更好的方法来实现这一点,在某个地方,你可以设置默认的小部件值,而不必重写包装器类中的每个小部件。。。在


Tags: self主题init颜色部件tkinterbuttonroot
2条回答

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

def resetUI(self, bg=None, fg=None):
    for button in list_of_buttons:
        button.config(background=bg, foreground=fg)

我知道几年前有人问过这个问题,但是对于那些有同样问题的人来说,如果你无意中发现了这个问题,下面是一个如何为你的小部件整合通用设置的例子:

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))

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

相关问题 更多 >