使用python 3和tkinter中的colorchooser更改tkinter窗口中文本的颜色

时间:2013-10-18 16:00:34

标签: python python-3.x tkinter

尝试选择然后打印它的颜色,打印位工作只需要让颜色部分工作。如果您需要查看更多代码,请询问。

def mColour():
    color = colorchooser.askcolor()
    color_name = color[1]
    mlabel2 = Label(mGui,text=color).pack()
    messagebox.showinfo(title = "Colour",message = "This feature has not been fully added yet.")
    return
def mhello():
    mtext = ment.get()
    fg=color_name
    mlabel2 = Label(mGui,text=mtext).pack()
    return

错误:

color_name not defined

2 个答案:

答案 0 :(得分:2)

据我所知,您正在尝试访问在mColour的本地范围内创建的变量(这意味着它不在mhello的范围内)。您可以通过mColour返回color_name

来解决此问题
def mColour():
    color = colorchooser.askcolor()
    color_name = color[1]
    mlabel2 = Label(mGui,text=color).pack()
    messagebox.showinfo(title = "Colour",message = "This feature has not been fully added yet.")
    #################
    return color_name
    #################

然后在mhello中访问该值,如下所示:

def mhello():
    mtext = ment.get()
    ############
    fg=mColour()
    ############
    mlabel2 = Label(mGui,text=mtext).pack()

另外,我想谈两件事:

1)函数末尾的空return什么都不做。

2)pack方法返回None。您的代码应如下所示:

mlabel2 = Label(mGui,text=mtext)
mlabel2.pack()

现在mlabel2指向标签,就像它应该的那样。

答案 1 :(得分:1)

我在你的帮助下找到了解决方案。

#colour chooser
def mColour():
    color = colorchooser.askcolor()
    color_name = color[1]
    mlabel2 = Label(mGui,text=color).pack()
    messagebox.showinfo(title = "Colour",message = "This feature has not been fully added yet.")
    return color_name
#printing message 
def mhello():
    mtext = ment.get()
    mlabel2 = Label(mGui,text=mtext, fg = mColour()) # i put the fg and the mcolour inside here insted.
    mlabel2.pack()