【发布时间】:2016-07-13 02:23:21
【问题描述】:
我正在尝试将 SparQL 查询的输出(通过 rdflib)插入 Tkinter GUI 的列表框中。当前版本的代码是:
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 查询:print: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)
当我运行程序并单击按钮填充列表框时,我在列表框中只得到一个名称,即列表的第一个。如何将整个列表插入到列表框中,例如打印命令出来的?
附言。我通过使用 self.List_3.insert("end",self.*lst) 尝试了“*”,但这只会将名称拆分为一个包含名称拆分的列表,如下所示:
D
T
S
1
2
..etc
更新:
我已经添加了这样的列表拆分:
...
output = row['file']
self.lst = output.split("\n")
self.List_3.insert("end",*self.lst)
但它仍然只在列表框中提供一个列表条目(列表的最后一个)。如果我在新设置中打印 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']
...等
【问题讨论】:
-
顺便说一句,这个答案是否帮助您解决了您的问题,还是您仍然遇到问题?如果您还有它们,请告诉我您遇到的问题,以便我提供更多帮助。
-
感谢您的回复!我已经能够再做一些工作,但我仍然有问题。我已经更新了上面的问题!
标签: python user-interface tkinter listbox sparql