【问题标题】:Tkinter Listbox "update" or "refresh"Tkinter 列表框“更新”或“刷新”
【发布时间】:2017-02-27 10:52:27
【问题描述】:

我制作了一个简单的 GUI,其中包含一个用于输入的条目,一个用于将输入保存到 ini 文件的按钮。这篇文章的漏洞目的是在我添加的列表框中。如何刷新/更新列表框?如果我输入我的姓名并点击保存,则会生成文件并将其存储在文件夹中。但是 GUI 中的列表会更新。

当我打开 GUI 时,我希望列表框显示添加的新文件。可能是一个更新 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()

【问题讨论】:

    标签: python-3.x user-interface tkinter listbox


    【解决方案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,这样会更快更有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多