Tkinter cbox不会改变var值

时间:2017-09-13 04:21:37

标签: python checkbox tkinter

所以,基本上发生的事情是我创建了一个密码管理器,它有一个密码生成部分,我把它移到一个窗口的Tkinter程序,以方便使用。除了复选框之外,我得到了所有内容,所以首先调用函数时它会给我一个字母表空长度的错误,所以我将字母设置为等于具有特殊字符的列表。之后我用while循环尝试了它们,结果相同。 (整个代码是程序内部的一个函数,只有在按下按钮时才能运行)我知道我可以用 init 解决这个问题,但是我希望有人知道一个没有重写的更简单的方法太多了。这是编辑以简化代码。我使用了while循环,并获得了与if语句相同的结果。我得到的错误是在这种情况下没有定义a。

from tkinter import *
import random

def cbox_var():
    while cbox_1 == True:
        a = 10
    while cbox_1 == False:
        a = 20
    print(a)

main = Tk()
cbox_1 = Checkbutton(main, text="yes or no")
cbox_1.pack()
testbutton = Button(main,text="Test", command=cbox_var)
testbutton.pack()

main.mainloop()

1 个答案:

答案 0 :(得分:0)

要获取checkbutton的值,必须为其分配一个特殊的tkinter变量。然后,您可以通过调用变量上的get方法来获取值。

示例:

import tkinter as tk

def cbox_var():
    checked = cbox_variable.get()
    print("Checked?", checked)

main = tk.Tk()
cbox_variable = tk.BooleanVar()
cbox_1 = tk.Checkbutton(main, variable=cbox_variable, text="yes or no")
cbox_1.pack()
testbutton = tk.Button(main,text="Test", command=cbox_var)
testbutton.pack()

main.mainloop()