Python 为什么我的Tkinter窗口背景没有改变?

Python 为什么我的Tkinter窗口背景没有改变?,python,python-3.x,tkinter,Python,Python 3.x,Tkinter,我有一个小程序,它有一个功能,可以改变不同窗口的背景色,而不是我用来要求背景色的框架。(我希望您能理解这一点。)该程序是用Python编写的,带有Tkinter库 每次我在窗口中单击“启用”,它都会更改第二个窗口中背景的颜色,但不会更改为我选择的颜色 问题在哪里 def Options(): def OptionButton(): c= wert.get() if c == 1: fenster.config(background="red") elif

我有一个小程序,它有一个功能,可以改变不同窗口的背景色,而不是我用来要求背景色的框架。(我希望您能理解这一点。)该程序是用Python编写的,带有Tkinter库

每次我在窗口中单击“启用”,它都会更改第二个窗口中背景的颜色,但不会更改为我选择的颜色

问题在哪里

def Options():
def OptionButton():
    c= wert.get()
    if c == 1:
        fenster.config(background="red")
    elif c == 2:
        fenster.config(background="blue")
    else:
        fenster.config(background="yellow")


    global usermod
    usermod= tkinter.Entry.get(opEntry)

    fenster.update()
    option.destroy()

def close():
    option.destroy()


option=tkinter.Tk()
option.title("Options")
option.config(background="white")

#Backgroundframe
bgFrame= tkinter.Frame(option)
bgFrame.grid(row=0, column=0, padx=10, pady=20)

info3=tkinter.Label(bgFrame,text="Hintergrund im Menü")
info3.grid(row=1,column=0,padx=10, pady=20)

#2 Radiobutton

global wert
wert = tkinter.StringVar()

knopfA=tkinter.Radiobutton(bgFrame,text="Red", variable=wert,value="1")
knopfB=tkinter.Radiobutton(bgFrame,text="Blue", variable=wert, value="2")
knopfC=tkinter.Radiobutton(bgFrame,text="green", variable=wert,value="3")



knopfA.grid(column=0,row=2)
knopfB.grid(column=0,row=3)
knopfC.grid(column=0,row=4)

knopfA.select()

#OptionFrame
opFrame = tkinter.Frame(option)
opFrame.grid(row=0, column=1,padx=10,pady=20)

#Optionbutton
oplabel=tkinter.Label(opFrame,text="Value User Mode")
oplabel.grid(row=1,column=0,padx=10,pady=2)

opEntry=tkinter.Entry(opFrame,width=12)
opEntry.grid(row=2,column=0,padx=10,pady=2)


#OptionButtonFrame
btFrame=tkinter.Frame(option)
btFrame.grid(row=3,column=0,padx=10,pady=20)

opbutton=tkinter.Button(btFrame,text="Enable", command = lambda:OptionButton())
opbutton.grid(row=1, column=0,padx=10,pady=2)

clbutton=tkinter.Button(btFrame,text="close",command=lambda:close())
clbutton.grid(row=2, column=0,padx=10,pady=2)

option.mainloop()

问题在于此代码:

c = wert.get()

if c == 1:
        fenster.config(background="red")
elif c == 2:
        fenster.config(background="blue")
else:
        fenster.config(background="yellow")
.get()
方法返回一个
str
,因为您将
wert
声明为
StringVar()
,但您正在与
int
进行比较。通过
int(c)
转换或比较字符串:

if c == '1':

或者将
wert
声明为
IntVar()
。另外,请重新阅读Python
global
语句的工作原理——在您希望修改函数中全局的位置使用它,而不是在定义全局的位置使用它。

而不是将wert声明为StringVar,您应该将其声明为IntVar,因为在您的函数选项按钮中,您正在对字符串和int进行比较,因此它总是在else部分输入,因此您的背景始终为黄色。

对于问题中的糟糕英语,我深表歉意DIt也不起作用。我还试图改变这些值。wert的值始终为“”。。。为什么会这样?@NextTV,我不知道你所说的“wert的值”是什么意思,但是
wert.get()的值在我的系统上返回为字符串“1”、“2”或“3”。在我的系统上,他给了我一个空值。。。我不知道。。。我应该将python更新到最新版本吗?你有哪条蟒蛇?