Ich schreibe eine einfache Bulk-Datei-Dienstprogramm. Ich habe zwei Listenfelder in der GUI. Listbox1 enthält eine Liste von Dateien, die in dem Verzeichnis vorhanden sind, das der Benutzer auswählt. Der Benutzer kann dann ausgewählte Elemente in Listbox1 zu Listbox2 hinzufügen. Derzeit können doppelte Artikel hinzugefügt werden. Ich möchte herausfinden, wie Sie prüfen können, ob bereits ausgewählte Objekte in Listbox2 vorhanden sind, und nur Objekte hinzufügen, die noch nicht vorhanden sind.Python 2.7: Hinzufügen neuer Elemente zu Tkinter Listbox ohne bestehende Werte hinzufügen
Hier ist mein Code:
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()
In dem obigen Code die Funktion selectAdd() führt das Element Manipulation. Ich hatte gehofft, dies zu tun, indem ich eine andere for-Schleife innerhalb der Funktion hinzufüge, die die Werte in listbox2 zurückgibt, und Elemente hinzufüge, wenn nicht in listbox2. Allerdings kann ich scheinbar nur ausgewählte Werte mit .get zurückgeben, ich kann nicht herausfinden, wie alle Werte ausgewählt werden. Ich bin mir auch nicht sicher, ob dies überhaupt der beste Weg ist. Jede Hilfe würde sehr geschätzt werden!
Okay, ich fühle mich jetzt dumm. Ich habe versucht, neue Listen zu erstellen und "nicht in" und ".app" zu verwenden. Ich habe nicht realisiert .get kann das tun. Vielen Dank, funktioniert wie ein Zauber. – JamesPy