使用 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。
在 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。