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

2024-06-26 11:14:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个小程序,它的功能是改变不同窗口的背景色,而不是我用来要求背景色的框架。(我希望你能理解这一点。)这个程序是用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()

Tags: textconfigtkintercolumngridrowoptionbackground
2条回答

问题是这个代码:

c = wert.get()

if c == 1:
        fenster.config(background="red")
elif c == 2:
        fenster.config(background="blue")
else:
        fenster.config(background="yellow")

.get()方法返回一个str,因为您声明了wertStringVar(),但要与int进行比较。通过int(c)转换或比较字符串:

^{pr2}$

或者声明wertIntVar()。另外,请重新阅读Python global语句的工作原理,在要修改函数内全局的地方使用它,而不是在定义全局的地方。在

不要将wert声明为StringVar,而应该将其声明为IntVar,因为在函数OptionButton中,您在字符串和int之间进行比较,因此它总是在else部分输入,因此背景总是黄色的。在

相关问题 更多 >