[英]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.