如何创建一个按钮来保存python中的checkbutton的状态?

时间:2015-02-06 18:08:29

标签: python button python-3.x checkbox tkinter

我在python 3中使用tkinter。 我的GUI上有一个按钮和按钮:

entercheck = Checkbutton(window1, variable = value)
entercheck.pack()
savebutton = Button(window1, width=5, height=2, command = savecheck)
savebutton.pack()

其中value=IntVar()。 我试图使其在单击时按钮将按钮的状态保存到变量status。我试过了:

def savecheck():
    global status
    status = value.get()

但是,无论是否选中了检查按钮,这总是会导致状态(这是一个全局变量)等于0。这是为什么?

我看过这个问题:Getting Tkinter Check Box State这个方法似乎对他们有用了吗?

编辑:

我创建了一个较小版本的程序试图让它工作,这次只是试图输出checkbutton变量的值,但它仍然不起作用。这是完整的代码:

from tkinter import *
root=Tk()

def pressbttn1():

    def savecheck():
        print (value.get()) #outputs 0 no matter whether checked or not???

    window1 = Tk() 

    value=IntVar()
    entercheck = Checkbutton(window1, bg="white", variable = value)
    entercheck.pack()

    savebttn = Button(window1,text= "Save", command = savecheck)
    savebttn.pack()

class Application(Frame):

    def __init__(self, master):
        super(Application, self).__init__(master)
        self.grid()
        self.create_widgits()

    def create_widgits(self):

        self.bttn1 = Button(self, text= "New Window", command = pressbttn1)
        self.bttn1.pack()

#main
app=Application(root)
root.mainloop()

我不明白为什么上面的代码不起作用,如下所示:

from tkinter import *
master = Tk()

def var_states():
   print(check.get())

check = IntVar()
Checkbutton(master, text="competition", variable=check).pack()

Button(master, text='Show', command=var_states).pack()
mainloop()

2 个答案:

答案 0 :(得分:2)

statussavecheck函数的本地变量。使它成为一个全球性的,它将按预期工作。

status = 0
value = IntVar()

def savecheck():
    global status
    status = value.get()

entercheck = Checkbutton(self, variable = value)
entercheck.pack()
savebutton = Button(self, width=5, height=2, command = savecheck)
savebutton.pack()

答案 1 :(得分:1)

老实说,我并不完全清楚为什么你的程序不起作用,但仍然有一个解决方案。

pressbttn1()功能中,更改:

    window1 = Tk()

    window1 = Toplevel()

调用Tk()会创建一个新的根窗口。调用Toplevel()会创建一个单独的顶级窗口widget,该窗口独立于根窗口,但由同一个窗口管理器控制。应用程序可以包含任意数量的应用程序。

有关窗口管理器的其他信息,请参阅Toplevel Window Methods