所以,基本上发生的事情是我创建了一个密码管理器,它有一个密码生成部分,我把它移到一个窗口的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()
答案 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()