我試圖將SparQL查詢的輸出(通過rdflib)插入到Tkinter GUI的列表框中。代碼的當前版本是:如何讓Tkinter從列表輸入中生成列表框
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)
如果我使用命令打印SPARQL查詢:打印:self.lst,我得到以下打印消息:
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)
當我運行程序並點擊按鈕來填充列表框,我只在列表框中獲得一個名字,即列表中的第一個。我怎樣才能得到列表框中插入的整個列表,如它出來的打印命令?
Ps。我用self.List_3.insert嘗試了「*」,但只拆分名成由名字分裂的名單,因爲這樣(「結束」,自* LST):
D
T
S
1
2
..etc
üPDATE:
我已經加入列表拆分爲這樣:
...
output = row['file']
self.lst = output.split("\n")
self.List_3.insert("end",*self.lst)
,但它仍然只給在ListBox(列表中的最後一個)一個列表條目。如果我在新設置印刷self.lst,它打印:
[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']
...等
順便說一句,答案有幫助你解決你的問題,還是你仍然存在問題?如果你仍然有他們,讓我知道你在哪裏卡住,所以我可以幫助更多。 – Lafexlos
謝謝您的回覆!我已經能夠做更多的工作,但我仍然有問題。我已經更新了上面的問題! –