Python 无法使用tkinter使函数与checkbuttons一起工作

Python 无法使用tkinter使函数与checkbuttons一起工作,python,python-2.7,tkinter,Python,Python 2.7,Tkinter,我不知道这为什么不起作用,我试过改变事物的顺序,但仍然不起作用。代码的要点是显示Null这个词,当您选择任何一个复选按钮时,根据它是奇数还是偶数,它会将Null这个词更改为奇数或偶数。任何帮助都是好的 # Create a window the_window = Tk() # Give the window a title the_window.title('Odd or Even') ##Some global variables margin = 8 text = 'Null' ##

我不知道这为什么不起作用,我试过改变事物的顺序,但仍然不起作用。代码的要点是显示Null这个词,当您选择任何一个复选按钮时,根据它是奇数还是偶数,它会将Null这个词更改为奇数或偶数。任何帮助都是好的

# 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()

每次调用函数时都需要获取它们的值,因为每次选中或取消选中时它们都在更改。另外,要更新标签的文本,您需要使用如下内容。标签名称[文本]=新文本

除此之外,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()

您必须在回调函数中调用.get方法。还可以尝试使用可更改的_label.setNew Text!更改标签的文本。Effbot为tkinter提供了非常好的资源:


谢谢,我尝试将if语句内容更改为changeable_label.set和您的其他建议,但仍然无效。您从这里粘贴了所有内容?或者只是通过移动get in函数来更新代码?如果你只更新了,你还需要更新if的内部,以更改标签文本。好的,我只是复制并粘贴了你的代码,它工作了。我一定是错过了什么改变。非常感谢你!
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()