簡體   English   中英

如何將文件夾中的文件列出到 TK 列表框 - Python3

[英]How to list files in a folder to a TK Listbox - Python3

標題告訴你一切,我在一個文件夾中找到了一些列表文件,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()

由於您在編寫程序時不知道要插入的項數,因此請替換

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)

我把它留給你用你想要的os目錄列表函數調用來替換files

我知道舊問題,但遇到了這個問題,上面的答案對我不起作用,但找到了解決方案:

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 什么都不做,elif RefreshList()

或者,如果您要保存應用程序中的文件,則可以在按鈕保存功能的末尾包含“RefreshList()”,這樣,一旦將新文件保存到目錄中,它就會將目錄內容重新加載到列表框中

一種更簡單的方法是使用StringVar

要將項目填充到列表框,首先要創建一個用項目列表初始化的StringVar object。 然后將此StringVar object 分配給listvariable選項,如下所示:

list_items = StringVar(value=items)
listbox = Listbox(root, listvariable=list_items)
listbox.pack()

要在Listbox中添加、刪除或重新排列項目,您只需修改list_items變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM