Ich versuche, die Ausgabe einer SparQL-Abfrage (via rdflib) in eine Listbox in einer Tkinter-GUI einzufügen. Die aktuelle Version des Codes ist:wie Tkinter eine Listbox von der Listeneingabe erzeugen kann
Button_4 = Button(self, text="Load object list", command=self.populateListbox)
Button_4.grid(row=14, column=0, sticky=N)
self.List_3 = Listbox(self, height=7, width=40, selectmode='single', exportselection=0)
self.List_3.grid(row=15, column=0, sticky=N)
def populateListbox(self):
g=rdflib.Graph()
filename = r'bim\Perceel4.owl'
g.load(filename, format='xml')
Layer = u'Asfaltplak_onderlaag'
qres = g.query(
"""SELECT DISTINCT ?value ?name ?file ?frag
WHERE {
-- SparQL query for results--
}""",
initNs=dict(
cbim=Namespace("http://www.coinsweb.nl/cbim-1.1.owl#")))
for row in qres:
if (rdflib.term.Literal(Layer, datatype=rdflib.term.URIRef(u'http://www.w3.org/2001/XMLSchema#string')) in row):
self.lst = row['file']
self.List_3.insert("end",self.lst)
Wenn ich drucken Sie die SPARQL-Abfrage mit dem Befehl: Druck: self.lst, erhalte ich die folgende Druckmeldung:
DTB HRB 166.495 - 166.038 VH_gml.xml
DTB OPR 167.647 - 167.601 VH_gml.xml
DTB PST 170.824 - 170.769 VH_gml.xml
DTB HRB 166.038 - 164.169 VH_gml.xml
DTB PST 167.696 - 167.767 VH_gml.xml
...etc (more of these filenames)
Wenn ich das Programm laufen und klicken Sie auf die Schaltfläche, um die Listbox zu füllen, ich bekomme nur einen Namen in der Listbox, nämlich den ersten der Liste. Wie kann ich die gesamte Liste in die Listbox einfügen, wie es zB der Druckbefehl ausgibt?
Ps. Ich versuchte, die ‚*‘ durch self.List_3.insert verwenden, aber das teilt nur den Namen in eine Liste, die aus dem Namen geplatzt, als solche („Ende“, selbst * lst.):
D
T
S
1
2
..etc
U pdate:
ich die Liste Split als solche hinzugefügt haben:
...
output = row['file']
self.lst = output.split("\n")
self.List_3.insert("end",*self.lst)
aber es immer noch gibt nur einen Listeneintrag im Listenfeld (die letzte in der Liste). Wenn ich self.lst in der neuen Einrichtung zu drucken, druckt es:
[u'DTB HRB 167.639 - 167.696 VH_gml.xml']
[u'DTB PST 167.134 - 167.274 VH_gml.xml']
[u'DTB HRB 166.038 - 164.169 VH_gml.xml']
... etc
BTW, hat die Antwort Ihnen geholfen, Ihr Problem zu lösen, oder sind Sie immer noch Probleme? Wenn Sie sie noch haben, lassen Sie mich wissen, wo Sie stecken bleiben, damit ich mehr helfen kann. – Lafexlos
Vielen Dank für Ihre Antwort! Ich konnte etwas mehr daran arbeiten, aber ich habe immer noch ein Problem. Ich habe die obige Frage aktualisiert! –