您的位置:

使用Python Tkinter控制背景颜色的方法

一、控制窗口背景颜色

通过configure(bg='color')方法可以更改Tkinter窗口的背景颜色。其中,color可以是十六进制的颜色值或者Tkinter预设的颜色名称。

from tkinter import *

root = Tk()

# 设置窗口大小
root.geometry("400x300")

# 设置窗口背景颜色
root.configure(bg='coral')

root.mainloop()

运行上述代码,窗口的背景颜色将会变成coral。

二、控制控件背景颜色

除了可以控制窗口的背景颜色,还可以通过configure(bg='color')方法控制控件的背景颜色。以下是一个使用Button控件的例子:

from tkinter import *

root = Tk()

# 设置窗口大小
root.geometry("400x300")

# 设置窗口背景颜色
root.configure(bg='lightgreen')

# 创建Button控件
my_button = Button(root, text="点击我", font=("Arial Bold", 20), bg='cornflowerblue')

# 设置Button控件的背景颜色
my_button.configure(bg='yellow')

# 显示Button控件
my_button.pack(pady=50)

root.mainloop()

运行上述代码,在窗口中会出现一个Button控件,它的背景颜色是yellow。

三、通过颜色选择器控制背景颜色

除了可以通过代码控制背景颜色,我们还可以利用颜色选择器让用户自己选择喜欢的颜色,然后将选择的颜色作为背景颜色。

from tkinter import *
from tkinter import colorchooser

root = Tk()

# 设置窗口大小
root.geometry("400x300")

def change_bg_color():
    '''
    打开颜色选择器,并将选择的颜色作为窗口的背景颜色
    '''
    color = colorchooser.askcolor(title="选择背景颜色")
    root.configure(bg=color[1])
    
# 创建Button控件
my_button = Button(root, text="点击我选择背景颜色", font=("Arial Bold", 20), bg='cornflowerblue', command=change_bg_color)

# 显示Button控件
my_button.pack(pady=50)

root.mainloop()

运行上述代码,用户可以通过点击按钮选择背景颜色。

四、扩展:使用渐变色作为背景颜色

为了让界面更加美观,我们可以使用渐变色作为背景色。具体的实现方式是通过create_rectangle()方法创建一个矩形,并为矩形指定渐变色。

import tkinter as tk

root = tk.Tk()

# 设置窗口大小
root.geometry("400x300")

# 在画布上创建一个矩形,并为其指定渐变色
canvas = tk.Canvas(root, width=400, height=300)
canvas.pack()

start_color = "#63d8f1"
end_color = "#eeeeee"

canvas.create_rectangle(0, 0, 400, 300, fill=start_color, width=0)

for i in range(300):
    r = int(i * int(end_color[1:3], 16) / 300 + (300 - i) * int(start_color[1:3], 16) / 300)
    g = int(i * int(end_color[3:5], 16) / 300 + (300 - i) * int(start_color[3:5], 16) / 300)
    b = int(i * int(end_color[5:7], 16) / 300 + (300 - i) * int(start_color[5:7], 16) / 300)
    color = '#{:02x}{:02x}{:02x}'.format(r, g, b)
    canvas.create_line(0, i, 400, i, width=1, fill=color)

root.mainloop()

运行上述代码,窗口的背景将会是一个从上到下逐渐变化的渐变色。