如何将文件夹中的文件列入TK Listbox - Python3

时间:2017-10-07 22:28:18

标签: python python-3.x tkinter

标题告诉你一切,我在文件夹中找到了一些列表文件,stackoverflow问题。但没有一个我想要的。

我真的很感谢你的帮助。这里有一些代码可以帮助您构建答案。

from tkinter import *
import tkinter.messagebox as box

window = Tk()
window.title( '<title>' )

frame = Frame( window )

listbox = Listbox( frame )
listbox.insert( 1, '<filename>' )
listbox.insert( 2, '<filename>' )
listbox.insert( 3, '<filename>' )

def dialog() :
    box.showinfo( 'Selection' , 'Your Choice: ' + \
    listbox.get( listbox.curselection() ) )

btn = Button( frame, text = 'View Info', command=dialog )

btn.pack( side = RIGHT , padx = 5 )
listbox.pack( side = LEFT )
frame.pack( padx = 30, pady = 30 )

window.mainloop()

2 个答案:

答案 0 :(得分:1)

我知道老问题了,但是遇到了这个问题,上面的答案对我不起作用,但是找到了解决方案:

from tkinter import *
import os
...
myList = os.listdir('<folder location>')

myListBox = Listbox(<frame>)

for file in myList:
    MyListBox.insert(END, file)
MyListBox.pack()
...

这只会在页面加载时用指定目录中的文件填充一次列表框。

我能够将其放入函数中,并在页面加载时调用一次函数,但是随后我在列表下方添加了一个按钮以在单击时刷新。 制作您的按钮(command = RefreshList)

...

def RefreshList():
    myList = os.listdir('<folder location>')
    print(MyList)
    MyListBox.delete(0, END)
    for file in MyList:
        MyListBox.insert(END, file)
RefreshList()
...

我认为,当将新项目添加到目录中时,您可以使其自动刷新,并且我相信这与循环有关,len()可以计算目录中文件的数量,然后计算项目的数量在列表中。将2与!=进行比较,如果True不执行任何操作,则省略RefreshList()

或者,如果要从应用程序中保存文件,则可以在按钮保存功能的末尾包含“ RefreshList()”,这样,一旦将新文件保存到目录中,它将重新加载目录内容进入列表框

答案 1 :(得分:0)

由于您在编写程序时不知道要插入的项目数,因此请替换

listbox = Listbox( frame )
listbox.insert( 1, '<filename>' )
listbox.insert( 2, '<filename>' )
listbox.insert( 3, '<filename>' )

listbox = Listbox(frame)
for name in files(dir):
    listbox.insert('end', name)

我留给你用你想要的files目录列表函数调用替换os