怎么设置python界面颜色_python – 如何一次更改tkinter GUI中所有内容的颜色

我有一些代码(如下所示),提示用户选择将GUI更改为哪种颜色.但我的问题是它只会改变背景.我想知道是否有办法立即更改每个标签和按钮的背景,或者我是否必须单独更改每个标签/按钮.

import tkinter

window = tkinter.Tk()

colour_frame = tkinter.Frame(window)

options_frame = tkinter.Frame(window)

def colours():

options_frame.pack_forget()

red.pack()

orange.pack()

back_button.pack()

colour_frame.pack()

def back():

options_frame.pack()

colour_frame.pack_forget()

def make_red():

window.configure(background="red")

def make_orange():

window.configure(background="orange")

colour_button = tkinter.Button(options_frame, text="Appearance", command=colours)

red = tkinter.Button(colour_frame, text="RED", command=make_red)

red.configure(bg = "red")

orange = tkinter.Button(colour_frame, text="ORANGE", command=make_orange)

orange.configure(bg = "orange")

back_button = tkinter.Button(colour_frame, text="Back", command=back)

window.mainloop()

解决方法:

您可以创建一个包含要更改的所有小部件的列表

myWidgets = [button1, label1, ... ] # List of widgets to change colour

for wid in myWidgets:

wid.configure(bg = newColour)

这是一次更改多个标签背景颜色的示例代码.

import tkinter as tk

# Change all label backgrounds

def change_colour():

c = user.get() #Get the entered text of the Entry widget

for wid in widget_list:

wid.configure(bg = c)

# Create GUI

root = tk.Tk()

tk.Label(root, text='Enter a colour').pack()

user = tk.Entry(root)

user.pack()

label_frame = tk.Frame(root)

label_frame.pack()

btn = tk.Button(root, text='Change Colour', command = change_colour)

btn.pack()

widget_list = [user, btn] # Add defined widgets to list

#Dynamicly create labels for example

for x in range(10):

lbl = tk.Label(label_frame, text='Label '+str(x))

lbl.pack(side = tk.LEFT)

widget_list.append(lbl) #Add widget object to list

root.mainloop()

或者,如果您的Frame已经包含了您想要更改的所有小部件,那么您可以使用它.

parent_widget.winfo_children()将返回一个列表,其中包含存储在父窗口小部件中的所有窗口小部件

def change_colour():

c = user.get()

for wid in label_frame.winfo_children():

wid.configure(bg = c)

标签:python,user-interface,button,tkinter,background

来源: https://codeday.me/bug/20190929/1833927.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值