Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python tkinter上的Checkbutton将其保留';不管怎样,它都是有价值的_Python_Tkinter - Fatal编程技术网

Python tkinter上的Checkbutton将其保留';不管怎样,它都是有价值的

Python tkinter上的Checkbutton将其保留';不管怎样,它都是有价值的,python,tkinter,Python,Tkinter,我试图从tkinter上的Checkbutton获取值,但它保留了原始值。我在无数论坛上尝试过人们说的话,包括这一次,但没有任何效果,它只是保留了我用var.set(True)或var.set(False)给出的值。顺便说一句,这个复选按钮位于弹出窗口上,但它不是全局的,它只是在所述窗口上定义的。这是我的代码: import tkinter as tk import tkinter.ttk as ttk root = tk.Tk() root.geometry('500x500') var

我试图从tkinter上的Checkbutton获取值,但它保留了原始值。我在无数论坛上尝试过人们说的话,包括这一次,但没有任何效果,它只是保留了我用
var.set(True)
var.set(False)
给出的值。顺便说一句,这个复选按钮位于弹出窗口上,但它不是全局的,它只是在所述窗口上定义的。这是我的代码:

import tkinter as tk 
import tkinter.ttk as ttk

root = tk.Tk()
root.geometry('500x500')

var = tk.BooleanVar()
var.set(False)
startup = tk.Checkbutton(root, variable=var, onvalue=True, offvalue=False , text = "test")


当我使用
var.get()
时,我得到初始值。请帮助我:(谢谢您的建议。

原因是Checkbutton需要一个回调函数来更改按钮的状态

def toggle(button):
    if button.get() is True:
        button.set(True)
    else:
        button.set(False)
您可以在Checkbutton的实例化中使用回调函数

startup = tk.Checkbutton(root, variable=var, text = "test",
            command=lambda button=var: toggle(button))

“Checkbutton需要回调函数来更改按钮的状态”-那不是真的。我承认我错了,Checkbutton需要回调函数。但是,如果要通过单击事件更改按钮的状态,是否需要回调函数?不,Checkbutton完全不需要回调就可以正常工作。但在我做了一点调整后,它工作得很好:(@savyexe,Bryan Oakley说得对,你不需要回调函数来更改Checkbutton的状态。我认为你的问题是不合适的,因为他解释说,当值被更改时,你无法读取值。你想要的是切换值并使其直观地反映出来。这就是我解释你的任务的原因ion as.您如何知道
var.get()
不起作用?您的代码从不调用
var.get()
。请提供完整的代码。当我添加足够的代码以在单击按钮时打印值时,它总是打印正确的值。