使用 Tkinter CheckButtons 列表获取值

Using a list of Tkinter CheckButtons to get values

在 CreateJson 函数的第 36 行附近,我尝试使用我创建的复选框的状态来创建 JSON 文件(我知道这不是创建文件的最佳方式一个 JSON 文件)。无论如何,我已经尝试了许多不同的方法来读取复选框的值。我读过在 Tkinter 对象上使用 .get() 可以获取值,但我已经尝试过这个独立的并在我的列表中,但它似乎不起作用。打印列表会像这样显示对象及其位置。

from itertools import count
from tkinter import *
from tkinter import filedialog
import os
import json
from traceback import print_tb

def openFile():

    filepath = filedialog.askdirectory()

    f = open("Modstext.json","w")
    f.write("\"mods\": [")

    jsonfiles = []
    for dirpath, subdirs, files in os.walk(filepath):
        for x in files:
            if x.endswith("ServerData.json"):
                jsonfiles.append(os.path.join(dirpath, x))

    counter = 0
    r = [len(jsonfiles)]
    for item in jsonfiles:
        with open(item,encoding='utf-8-sig') as file:
            data = json.load(file)
            var = IntVar()
            Checkbutton(window, text = data["name"],variable = var,onvalue=1,offvalue=0).pack()
            r.append(var)
            counter += 1

    def CreateJson(): 
        counter = 0
        print(r)
        for x in jsonfiles:
            if r[counter] == 1:       
                with open(x,encoding='utf-8-sig') as file:
                    data = json.load(file)
                    f.write("\n     {")
                    f.write("\n          \"modsId\":" + "\""+data["id"]+"\",")
                    f.write("\n          \"name\":" + "\""+data["name"]+"\",")
                    f.write("\n          \"version\":" + "\""+data["revision"]["version"]+"\"")
                f.write("\n     },")    
                counter += counter 
            else:
                counter += counter
                pass
        f = open("Modstext.json", "a")
        f.write("\n  ]")
        f.close
    
    button1 = Button(text="Create",command=CreateJson)
    button1.pack()  
    
    f.close()

window = Tk()
window.geometry("300x1200")
button = Button(text="Open",command=openFile)
button.pack()
window.mainloop() ```

不确定我们是否完全理解您的问题。这是您要找的吗?

value = Checkbutton.get()
print(value)

return 值为是或否,或者 1 或 0。