我一直试图将ipwhois查询的结果打印到Tkinter文本框中,但它无法正常工作。
目前我收到此错误:TclError:错误#args:应该是" .40872632.46072536插入索引字符?tagList chars tagList ...?"
这是我的代码:
result2=unicode(set(ipList).intersection(testList));
result3=result2[:19].strip()
result4=result3[6:]
obj = ipwhois.IPWhois(result4)
results = obj.lookup()
results2= pprint.pprint(results)
text = Tkinter.Text(self)
text.insert(Tkinter.INSERT, results2)
text.insert(Tkinter.END, "")
text.pack()
text.grid(...)``
如何打印或至少按换行拆分结果字符串?为什么它不起作用?
答案 0 :(得分:0)
这里的问题是,当您尝试获取results2的pprinted值时,它返回None
,因为pprint只是将输出写入sys.stdout
。然后,当你继续执行text.insert(Tkinter.INSERT, None)
时,它会抛出你不断接收的错误。这基本上意味着你需要找到另一种方法来获取列表的格式化字符串 - 我建议"\n".join(results)
。
作为旁注,除非self
是Tkinter.Tk()或Tkinter.Toplevel()或类似的东西,否则你不应该将它作为文本小部件的父级。最重要的是,您可以将上面的代码剪切并缩短到以下内容:
results2 = "\n".join(results)
text = Tkinter.Text(self)
text.insert(Tkinter.END, results2) # Write the string "results2" to the text widget
text.pack()
# text.grid(...) # Skip this, you don't need two geometry managers
检查this以阅读有关Tkinter的更多信息 - 这对于Tcl / Tk参考来说是一个非常好的资源。