所以,这是我的代码。本质上,我想做的是使标签的背景颜色与在颜色对话框中选择的颜色相同,以便人们可以看到颜色和十六进制颜色代码。请帮忙。

import sys
from tkinter import *
from tkinter import colorchooser

mGui = Tk()
mGui.geometry("600x300+500+500")
mGui.title("Hexadecimal Color Chooser")

def getColor():
    mycolor = colorchooser.askcolor()
    label = Label(mGui, bg = mycolor).pack()
    mycolor = str(mycolor)
    start = mycolor.index("#")
    stop = mycolor.index("')")
    mycolor = mycolor[start:stop]
    label = Label(mGui, text = "The hexadecimal color code is: " + mycolor).pack()

button = Button(mGui, text = "Choose a color", command = getColor).place(x=0, y=0)

最佳答案

这里有三个问题:


如果不打算导入sys,则不会执行任何操作。
Tkinter小部件的placepackgrid方法始终返回None。因此,对他们的任何呼叫都应始终放在自己的线路上。
tkinter.colorchooser.askcolor返回一个两个项的元组,如下所示:

((128.5, 64.25, 64.25), '#804040')


此外,该元组中的最后一项是所选颜色的十六进制代码。


下面是该脚本的固定版本:

from tkinter import *
from tkinter import colorchooser

mGui = Tk()
mGui.geometry("600x300+500+500")
mGui.title("Hexadecimal Color Chooser")

def getColor():
    color_choice = colorchooser.askcolor()[1]  # get the hex code
    color = Label(mGui, bg=color_choice)
    color.pack()
    hexcode = Label(mGui, text="The hexadecimal color code is: "+color_choice)
    hexcode.pack()

button = Button(mGui, text="Choose a color", command=getColor)
button.place(x=0, y=0)

mGui.mainloop()

09-10 07:33
查看更多