如何将obj.look up()打印到Tkinter文本框中

时间:2014-04-20 15:01:20

标签: python python-2.7 split tkinter pprint

我一直试图将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(...)``  

如何打印或至少按换行拆分结果字符串?为什么它不起作用?

1 个答案:

答案 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参考来说是一个非常好的资源。