简体   繁体   English

如何从 python tkinter 中的 txt 文件创建多个复选框

[英]How do I create multiple checkboxes from txt file in python tkinter

I'd like to make checkbuttons from the lines in my txt file via path, and then want to get the value of the checkbuttons.我想通过路径从我的 txt 文件中的行制作检查按钮,然后想要获取检查按钮的值。 In the 2021-03-27.txt2021-03-27.txt

1. Python
2. C++

and then, if 1.Python is checked, I need to append 1. Python complete in 2021-03-27.txt然后,如果检查了1.Python ,我需要 append 1. Python complete2021-03-27.txt txt 完成。

But I have no idea how I match the lines and variables of checkbuttons.但我不知道如何匹配检查按钮的行和变量。 How do I solve?我该如何解决?

path = "/Study/2021-03-27.txt"
f_open = open(path, "r")
lines = f_open.readlines()
hw_lists = []
chkvar = []

for line in lines:
    hw_lists.append(line) 
f_open.close()

chkvar_count = 0

for hw_list in hw_lists:
    Checkbutton(root, text=hw_list, variable=chkvar[chkvar_count]).pack()
    chkvar_count += 1

def resut_output():
    for i in range(len(hw_lists)-1):
        if chkvar == 1:
            f_open = open(path, "a")
            f_open.write(hw_lists[i]+"complete")
            f_open.close()

Button(root, text="OK", command=resut_output).pack()

root.mainloop()

Here is your solution这是您的解决方案

import tkinter as tk
from tkinter import *


path = "2021-03-27.txt"
f_open = open(path, "r")
lines = f_open.readlines()
hw_lists = []
chkvar = []

root = tk.Tk()

for line in lines:
    hw_lists.append(line)
    chkvar.append(tk.IntVar())
f_open.close()


chkvar_count = 0



for hw_list in hw_lists:
    print(chkvar_count)
    Checkbutton(root, text=hw_list, variable=chkvar[chkvar_count]).pack()
    chkvar_count += 1

def resut_output():
    for i in range(len(hw_lists)):
        if chkvar[i].get() == 1:
            f_open = open(path, "a")
            f_open.write('\n' + hw_lists[i].strip('\n') + " complete")
            f_open.close()

Button(root, text="OK", command=resut_output).pack()

root.mainloop()

You need to declare tk.IntVar() in chkvar instead of simple variable as tkinter updates IntVar on checkbox selection.您需要在 chkvar 中声明 tk.IntVar() 而不是简单变量,因为 tkinter 在复选框选择时更新 IntVar。 Then read the chkvar and compare it and keep on writing information in the text as desired.然后阅读 chkvar 并进行比较,并根据需要继续在文本中写入信息。 Feel free to ask me in case of any question.如有任何问题,请随时问我。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM