我创建了一个简单的GUI,其中包含一个输入项,一个用于将输入保存到ini文件的按钮。对于这个帖子的洞目的是在我添加的列表框中。如何刷新/更新列表框?如果我输入我的名字并点击保存,则会生成该文件并将其存储在该文件夹中。但是在GUI中列表剂量更新。
我希望列表框显示添加的新文件,当我打开GUI时。 Mabye一个更新GUI的按钮?
enter code here root
root = Tk()
root.geometry('400x300')
L1 = Label(root, text='Input')
L1.place(x=10, y=10)
e1 = Entry(root)
e1.place(x=10, y=40)
def SaveInput():
config = configparser.ConfigParser()
config.add_section("DATA")
config.set("DATA", "NAME", e1.get())
list_files = os.listdir(os.getcwd())
list_numbers = [int(x[:-4]) for x in list_files if x.endswith(".ini")]
if len(list_numbers) != 0:
new_file_num = max(list_numbers) + 1
else:
new_file_num = 1
new_file_name = str(new_file_num) + ".ini"
with open(new_file_name, "w") as file_obj:
config.write(file_obj)
L1 = Listbox(root, height=5, width=50)
L1.place(x=10, y=100)
# LISTBOX
def get_filenames():
path = "C:/Users/ita9bi/Desktop/Test list"
return os.listdir(path)
for filename in get_filenames():
L1.insert(END, filename)
B1 = Button(root, text='Save', command=SaveInput)
B1.place(x=10, y=60)
root.mainloop()
答案 0 :(得分:1)
您可以将上次保存的项目添加到列表框中,也可以在每次按Save
按钮时重新填充所有文件名。
def SaveInput():
....
....
new_file_name = str(new_file_num) + ".ini"
L1.insert(END, new_file_name)
或
def SaveInput():
....
....
L1.delete(0, END) #clear listbox
for filename in get_filenames(): #populate listbox again
L1.insert(END, filename)
而不是重新填充eveytime,只添加最后一项将更快更有效。