0
我正在編寫一個簡單的批量文件實用程序。我在GUI中有兩個列表框。 Listbox1包含用戶選擇的任何目錄中存在的文件列表。用戶然後可以將選擇的項目添加到listbox1到listbox2。目前這允許添加重複項目。我想弄清楚如何檢查所選項目是否已經存在於listbox2中,並且只添加那些不存在的項目。Python 2.7:向Tkinter列表框中添加新項目而不添加現有值
這是我的代碼:
from Tkinter import *
import Tkinter, Tkconstants, tkFileDialog, tkMessageBox
import os, sys
class FileZap():
def __init__(self, root):
def getDir():
dir = tkFileDialog.askdirectory(initialdir="C:/")
self.user1.delete(0,END)
self.user1.insert(0,dir)
files = (file for file in os.listdir(dir)
if os.path.isfile(os.path.join(dir, file)))
for file in files:
self.listbox1.insert(0,file)
def selectAdd():
selection1 = self.listbox1.curselection()
for i in selection1:
selectedFiles = self.listbox1.get(i)
self.listbox2.insert(0, selectedFiles)
root.title("Test_App 1.0")
root.geometry("860x450")
self.listbox1 = Listbox(root, width=50, selectmode="multiple")
self.listbox1.grid(row=2, column=2)
self.scrollbar = Scrollbar(orient=VERTICAL, command=self.listbox1.yview)
self.listbox1.config(yscrollcommand=self.scrollbar.set)
self.scrollbar.grid(row=2, column=3, sticky="ns")
self.listbox2 = Listbox(root, width=50)
self.listbox2.grid(row=2, column=4)
self.label1 = Label(root, text="Select a folder: ")
self.label1.grid(row=1, column=1)
self.user1 = Entry(root, width="50")
self.user1.grid(row=1, column=2)
self.browse = Button(root, text="Browse", command=getDir)
self.browse.grid(row=1, column=3)
self.button2 = Button(root, text="Add to Selection", command=selectAdd)
self.button2.grid(row=3, column=3)
self.quit = Button(root, text="Exit", command=root.quit)
self.quit.grid(row=8, column=4)
root = Tkinter.Tk()
file_zap = FileZap(root)
root.mainloop()
在上面的代碼中的函數選擇添加()執行的項目的操作。我希望通過在返回listbox2中的值的函數中添加另一個for循環,並添加不在listbox2中的項目來實現此目的。不過,我似乎只能使用.get返回選定的值,我無法弄清楚如何選擇所有值。此外,我不確定這是甚至做到這一點的最佳方式。任何幫助將非常感激!
好吧,我現在覺得自己很蠢。我試圖創建新列表並使用'不在'和.append來執行此操作。我沒有意識到.get可以做到這一點。非常感謝,像魅力一樣工作。 – JamesPy