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

问题描述

我想通过路径从我的 txt 文件中的行制作复选按钮,然后想要获取复选按钮的值。 在2021-03-27.txt

1. Python
2. C++

然后,如果选中 1.Python,我需要在 1. Python complete

中附加 2021-03-27.txt

但我不知道如何匹配 checkbuttons 的行和变量。怎么解决

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()

解决方法

这是您的解决方案

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()

您需要在 chkvar 中声明 tk.IntVar() 而不是简单变量,因为 tkinter 在复选框选择时更新 IntVar。然后读取 chkvar 并进行比较,并根据需要继续在文本中写入信息。如有任何问题,请随时问我。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...