Python 无法使用tkinter使函数与checkbuttons一起工作
我不知道这为什么不起作用,我试过改变事物的顺序,但仍然不起作用。代码的要点是显示Null这个词,当您选择任何一个复选按钮时,根据它是奇数还是偶数,它会将Null这个词更改为奇数或偶数。任何帮助都是好的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' ##
# 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()