2017-09-02 119 views
-1

我在lynda.com上學習Python GUI,由於某種原因,我的代碼不工作,而導師的代碼工作得很好。我將導師的工作複製到了我的代碼中,但仍然無效。Python tkinter radiobutton部件,顏色不會改變

這裏是我的代碼:

import tkinter as tk 
from tkinter import ttk 
win = tk.Tk() 
win.title("Python GUI") 

COLOR1 = "Blue" 
COLOR2 = "Gold" 
COLOR3 = "Red" 

# Radiobutton Callback 
def radCall(): 
    radSel = radVar.get() 
    if radSel == 1: win.configure(background=COLOR1) 
    elif radsel == 2: win.configure(background=COLOR2) 
    elif radsel == 3: win.configure(background=COLOR3) 

# create three Radiobuttons using one variable 
radVar = tk.IntVar() 
rad1 = tk.Radiobutton(win, text=COLOR1, variable=radVar, value=1, command=radCall) 
rad1.grid(column=0, row=5, sticky=tk.W, columnspan=3) 

rad2 = tk.Radiobutton(win, text=COLOR2, variable=radVar, value=2, command=radCall) 
rad2.grid(column=1, row=5, sticky=tk.W, columnspan=3) 

rad3 = tk.Radiobutton(win, text=COLOR3, variable=radVar, value=3, command=radCall) 
rad3.grid(column=2, row=5, sticky=tk.W, columnspan=3) 

win.mainloop() 

的問題是,每當我點擊藍色單選按鈕,它的工作原理,而金色和紅色給我的錯誤我的終端上。

錯誤:

Exception in Tkinter callback 
Traceback (most recent call last): 
    File "C:\Users\Joshua\AppData\Local\Programs\Python\Python36-32\lib\tkinter\__init__.py", line 1699, in __call__ 
    return self.func(*args) 
    File "radiobuttonwidget.py", line 60, in radCall 
    elif radsel == 2: win.configure(background=COLOR2) 
NameError: name 'radsel' is not defined 

同爲ELIF radsel == 3

+0

在這種情況下,「贏」是什麼?你得到的錯誤是什麼? –

+0

更新了我的問題。 win = tk.Tk() – joshua

+0

錯誤告訴你到底發生了什麼問題。 –

回答

0

您已經定義了你的變量爲radSel和在循環,您嘗試使用radsel。將「s」更改爲「S」。這應該是問題。