2014-05-02 29 views
0

我不知道爲什麼這不起作用,我試着改變事物和東西的順序,但它仍然無法正常工作。代碼的要點是顯示單詞Null,當你選擇任何一個檢查按鈕時,根據它的奇數或偶數,它將把單詞Null改爲奇數或偶數。任何幫助都會很好。無法獲得使用tkinter的checkbuttons的功能

# Create a window 
the_window = Tk() 

# Give the window a title 
the_window.title('Odd or Even') 


##Some global variables 
margin = 8 
text = 'Null' 

##Changing the size of the window 
the_window.geometry("350x150") 

##Making the label frame 
labelframe = LabelFrame(the_window, bd = 3) 
labelframe.grid(columnspan = 3, padx = margin, pady = margin) 

##Adding the Label 
changeable_label = Label(labelframe, text = text, font = ('Arial', 60), 
          fg = ('black')) 
changeable_label.pack(side = TOP) 

##Addind the Check Buttons 

def odd_even(): 
    chk_btn_value = value1 + value2 + value3 

    if chk_btn_value == 0: 
     text = 'Null' 
    elif chk_btn_value % 2 != 0: 
     text = 'Odd'  
    else: 
     text = 'Even' 

var1 = IntVar() 
var2 = IntVar() 
var3 = IntVar() 

value1 = var1.get() 
value2 = var2.get() 
value3 = var3.get() 


alpha = Checkbutton(the_window, text = 'Alpha', variable = var1, 
        onvalue = 1, offvalue = 0, command = odd_even) 
alpha.grid(row = 1, column = 1) 

beta = Checkbutton(the_window, text = 'Beta', variable = var2, 
        onvalue = 1, offvalue = 0, command = odd_even) 
beta.grid(row = 1, column = 2) 

gamma = Checkbutton(the_window, text = 'Gamma', variable = var3, 
        onvalue = 1, offvalue = 0, command = odd_even) 
gamma.grid(row = 1, column = 3) 


# Start the event loop 
the_window.mainloop() 

回答

0

每次調用函數時都需要獲取它們的值,因爲每次檢查或取消選中時都會發生變化。同時爲了更新標籤的文字,你需要使用這樣的東西。 label_name["text"] = "new_text"

此外,Checkbutton的默認開啓和關閉值分別爲1和0。你不需要寫這些。

將所有這些應用到您的代碼,將導致此結果。

from Tkinter import * 

def odd_even(): 
    value1 = var1.get() 
    value2 = var2.get() 
    value3 = var3.get() 
    chk_btn_value = value1 + value2 + value3 

    if chk_btn_value == 0: 
     changeable_label['text'] = "Null" 
    elif chk_btn_value % 2 != 0: 
     changeable_label['text'] = "Odd" 
    else: 
     changeable_label['text'] = "Even" 

# Create a window 
the_window = Tk() 

# Give the window a title 
the_window.title('Odd or Even') 


##Some global variables 
margin = 8 
text = 'Null' 

##Changing the size of the window 
the_window.geometry("350x150") 

##Making the label frame 
labelframe = LabelFrame(the_window, bd = 3) 
labelframe.grid(columnspan = 3, padx = margin, pady = margin) 

##Adding the Label 
changeable_label = Label(labelframe, text = text, font = ('Arial', 60), 
          fg = ('black')) 
changeable_label.pack(side = TOP) 

##Addind the Check Buttons 

var1 = IntVar() 
var2 = IntVar() 
var3 = IntVar() 

alpha = Checkbutton(the_window, text = 'Alpha', variable = var1, 
        command = odd_even) 
alpha.grid(row = 1, column = 1) 

beta = Checkbutton(the_window, text = 'Beta', variable = var2, 
        command = odd_even) 
beta.grid(row = 1, column = 2) 

gamma = Checkbutton(the_window, text = 'Gamma', variable = var3, 
        command = odd_even) 
gamma.grid(row = 1, column = 3) 


# Start the event loop 
the_window.mainloop() 
+0

謝謝,但我試過了,但它仍然不想工作。 – user3595762

+0

你有什麼錯誤?或什麼不工作? – Lafexlos

+0

它只是不會改變文字,沒有錯誤 – user3595762

-1

您必須在回調函數中調用.get()方法。另請嘗試changeable_label.set(「New Text!」)以更改標籤的文本。 Effbot對tkinter有非常好的資源:http://effbot.org/tkinterbook/label.htm

from Tkinter import * 
# Create a window 
the_window = Tk() 

# Give the window a title 
the_window.title('Odd or Even') 


##Some global variables 
margin = 8 
text = 'Null' 

##Changing the size of the window 
the_window.geometry("350x150") 

##Making the label frame 
labelframe = LabelFrame(the_window, bd = 3) 
labelframe.grid(columnspan = 3, padx = margin, pady = margin) 

##Adding the Label 
changeable_label = Label(labelframe, text = text, font = ('Arial', 60), 
          fg = ('black')) 
changeable_label.pack(side = TOP) 

##Addind the Check Buttons 

def odd_even(): 
    value1 = var1.get() 
    value2 = var2.get() 
    value3 = var3.get() 
    chk_btn_value = value1 + value2 + value3 
    print chk_btn_value 

    if chk_btn_value == 0: 
     text = 'Null' 
    elif chk_btn_value % 2 != 0: 
     text = 'Odd'  
    else: 
     text = 'Even' 

var1 = IntVar() 
var2 = IntVar() 
var3 = IntVar() 




alpha = Checkbutton(the_window, text = 'Alpha', variable = var1, 
        onvalue = 1, offvalue = 0, command = odd_even) 
alpha.grid(row = 1, column = 1) 

beta = Checkbutton(the_window, text = 'Beta', variable = var2, 
        onvalue = 1, offvalue = 0, command = odd_even) 
beta.grid(row = 1, column = 2) 

gamma = Checkbutton(the_window, text = 'Gamma', variable = var3, 
        onvalue = 1, offvalue = 0, command = odd_even) 
gamma.grid(row = 1, column = 3) 


# Start the event loop 
the_window.mainloop() 
+0

謝謝,我試着改變if語句的東西到changeable_label.set和你的其他建議,但它仍然無法正常工作。 – user3595762