Tkinter中所有标签小部件的配置相同

时间:2020-10-30 13:41:44

标签: python tkinter

是否可以在所需标签中使用相同的配置。例如,我们将配置放在变量中并按需使用:

from tkinter import *
mainWindow = Tk()

mainFrame = Frame(mainWindow,bg="Red")
mainFrame.pack(fill="both",expand=True)

# Create a variable that contains the configuration for Label
LabelSettings = '''font=("Arial", 18),bg="Black",  fg="white", padx=5, pady=5'''

label = Label(mainFrame,text="Vertical Frame Example")
label.config(LabelSettings)
label.pack(fill="x")

mainWindow.mainloop()

3 个答案:

答案 0 :(得分:2)

Tkinter维护一个内部默认选项值数据库(称为 options数据库)。如果要更改所有窗口小部件的默认值,则只需更改数据库值,除非所有窗口小部件都覆盖了特定的窗口小部件,否则所有窗口小部件都将获取更改。

例如,您可以在代码中添加以下内容以实现所需的功能:

mainWindow.option_add("*Label*Font", ("Helvetica", 32))
mainWindow.option_add("*Label*Foreground", "white")
mainWindow.option_add("*Label*Background", "red")
mainWindow.option_add("*Label*padX", 5)
mainWindow.option_add("*Label*padY", 5)

答案 1 :(得分:1)

您可能还要做的是在字典中创建选项,然后将其传递给config()方法,例如:

LabelSettings = {'font':("Arial", 18),'bg':"Black",'fg':"white",'padx':5, 'pady':5}
....
label.config(LabelSettings)

并且,如果要将其传递到小部件的初始创建中,则需要在示例中将其指定为关键字arguments(**),例如:

label = Label(mainFrame,text="Vertical Frame Example",**LabelSettings)

就像贾森哈珀所说的。

或者您也可以将label.config(LabelSettings)替换为:

exec(f'label.config({LabelSettings})') #might not be recommended

答案 2 :(得分:0)

from tkinter import *
mainWindow = Tk()

mainFrame = Frame(mainWindow,bg="Red")
mainFrame.pack(fill="both",expand=True)

将所有内容存储在单独的变量中,以便更轻松地进行更改。

# Create a variable that contains the 
configuration for Label
labelFont = ('Arial',18)
labelBG = 'Black'
labelFG = 'white'
labelPadx = 5
labelPady = 5

label = Label(mainFrame,text="Vertical Frame 
Example")
label.config(font = labelFont, bg = labelBG, fg = 
labelFG, padx = labelPadx, pady = labelPady)
label.pack(fill="x")

mainWindow.mainloop()