我有一个关于tkColorChooser的问题。我正在为绘图函数和程序的用户GUI工作,必须选择他们想要绘制的函数的颜色。我想测试他们选择的颜色是否为有效的tkColorChooser颜色。
我正在考虑做测试,如len(colorString) == 7(或4)或colorString.startswith('#'),但我仍然要做测试的颜色名称,如'黑色'和'绿色'和所有其他颜色可用…这似乎是很多工作,所以我想知道是否有一个更简单的方法来做到这一点?
我对诸如
之类的测试感兴趣string = 'black'
Is string a valid color ?
return True
string = 'blac'
Is string a valid color?
return False
干杯!
您可以在根窗口上调用winfo_rgb
方法,给它一个表示颜色的字符串。如果颜色有效,您将获得红色,绿色和蓝色组件。如果它无效,您将得到一个异常。
参见http://effbot.org/tkinterbook/widget.htm#Tkinter.Widget.winfo_rgb-method
在颜色名称中有用户类型吗?如果是这样,为什么不让用户直接从tkColorChooser中选择颜色呢?这样,用户选择的任何颜色都是定义的有效颜色。
这个例子来自Jan Bodnar (zetcode.com):
import Tkinter as tk
class Example(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self, parent)
self.parent = parent
self.initUI()
def initUI(self):
self.parent.title("Color chooser")
self.pack(fill=tk.BOTH, expand=1)
self.btn = tk.Button(self, text="Choose Color", command=self.onChoose)
self.btn.place(x=30, y=30)
self.frame = tk.Frame(self, border=1,
relief=tk.SUNKEN, width=100, height=100)
self.frame.place(x=160, y=30)
def onChoose(self):
rgb, hx = tkColorChooser.askcolor()
print(rgb)
print(hx)
self.frame.config(bg=hx)
root = tk.Tk()
ex = Example(root)
root.geometry("300x150+300+300")
root.mainloop()