如何使用Tkinter按钮更新窗口的背景颜色

时间:2016-12-06 16:57:27

标签: python tkinter background hex

我正在尝试使用随机十六进制数字的代码,将其转换为RGB并在窗口中显示它。我还想要一个改变颜色的按钮。目前,即使正在生成新的十六进制数,按钮也不会改变窗口的颜色,一切正常。我每按一下按钮就会尝试打开一个新窗口来创建更新,没有运气。这是我的代码。

import tkinter as tk
import random

options = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F']
r1 =random.choice(options)
r2 =random.choice(options)
r3 =random.choice(options)
r4 =random.choice(options)
r5 =random.choice(options)
r6 =random.choice(options)
hexnumber = '#' +r1 + r2 + r3 + r4 +r5 + r6

def ChangeHex():
    options = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C',  'D', 'E', 'F']
    r1 =random.choice(options)
    r2 =random.choice(options)
    r3 =random.choice(options)
    r4 =random.choice(options)
    r5 =random.choice(options)
    r6 =random.choice(options)
    hexnumber = '#' +r1 + r2 + r3 + r4 +r5 + r6

def New():
    new = tk.Tk()
    new.geometry("800x800")
    new.resizable(0, 0)
    new.configure(bg=hexnumber)
    b = tk.Button(new, text="Change Your Color",command=Combine)
    b.pack()
    new.mainloop()

def ChangeColor():
    root.config(bg = hexnumber)

def Combine():
    ChangeHex()
    ChangeColor()

root = tk.Tk()
root.geometry("800x800")
root.resizable(0, 0)
root.configure(bg=hexnumber)
b = tk.Button(root, text="Change Your Color",command=Combine)
b.pack()
root.mainloop()

此外,抱歉,如果这是愚蠢的,这是我第一次使用tkinter。

1 个答案:

答案 0 :(得分:0)

您有两个名为hexnumber

的变量
  • 首先 - 全局 - 您创建外部函数

  • 第二个 - 本地 - 您在ChangeHex()

  • 中创建的

您必须在global hexnumber中使用ChangeHex()来通知函数,而不是使用外部全局变量而不是创建本地变量

def ChangeHex():
    global hexnumber

    options = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C',  'D', 'E', 'F']
    r1 =random.choice(options)
    r2 =random.choice(options)
    r3 =random.choice(options)
    r4 =random.choice(options)
    r5 =random.choice(options)
    r6 =random.choice(options)
    hexnumber = '#' +r1 + r2 + r3 + r4 +r5 + r6

但如果使用return hexnumber并使用参数运行函数可能会更好 - def ChangeColor(hexnumber):

import tkinter as tk
import random

def ChangeHex():
    options = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C',  'D', 'E', 'F']
    r1 =random.choice(options)
    r2 =random.choice(options)
    r3 =random.choice(options)
    r4 =random.choice(options)
    r5 =random.choice(options)
    r6 =random.choice(options)
    hexnumber = '#' +r1 + r2 + r3 + r4 +r5 + r6
    return hexnumber

def ChangeColor(hexnumber):
    root.config(bg = hexnumber)

def Combine():
    new_hex = ChangeHex()
    ChangeColor(new_hex)

root = tk.Tk()
root.geometry("800x800")
root.resizable(0, 0)

root.configure(bg=ChangeHex())

b = tk.Button(root, text="Change Your Color",command=Combine)
b.pack()

root.mainloop()