如何更改某些小部件的默认Tkinter kwargs值?
我知道您可以使用tk_setPalette(主题)设置一般的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)
我确信有一种更好的方法可以做到这一点,某些地方让你设置默认的小部件值,而不会覆盖包装类中的每个小部件......
答案 0 :(得分:1)
没有任何内置功能可以为您完成此操作,但只需几行代码即可实现。您可以使用config(或configure)方法在运行时更改任何属性,例如,您可以执行以下操作:
def resetUI(self, bg=None, fg=None):
for button in list_of_buttons:
button.config(background=bg, foreground=fg)
答案 1 :(得分:1)
我知道这是在几年前被问到的,但是对于遇到相同问题而遇到这个问题的人来说,这里有一个如何为你的小部件整合通用设置的例子:
import java.io.File;
import java.util.Scanner;
import java.util.regex.Pattern;
File f = new File("input.tsv");
Scanner scanner = new Scanner(f).useDelimiter(Pattern.compile("^(?!.*(\\\\\\n)).*\\n$"));
import java.io.PrintWriter;
Writer writer = new PrintWriter("output.tsv");
while (scanner.hasNext())
writer.println(scanner.next().toString().replaceAll("\\\\\\n", ""));
scanner.close();
writer.close();
请注意,该选项必须是一个字符串,但值与往常一样(即颜色的字符串,但高度的整数)。