尝试在Tkinter画布中打印一些文本时,为什么在文本之间会出现括号?

时间:2019-04-24 12:59:14

标签: python python-3.x dataframe tkinter tkinter-canvas

我正在尝试在Tkinter画布上打印一些文本以及效果很好的图像。但是不幸的是,一些花括号也被打印在屏幕上,而在打印语句的任何地方都没有使用它们。我正在从数据框中获取文本的一部分,并将其存储在变量中,然后再在屏幕上打印。

我的代码如下:

best_batsmen = dataset.loc[dataset.loc[dataset['Innings']>=15,'Average'].idxmax(),'Names']
message = ("The best Batsman of the Tournament could possibly be: ",best_batsmen)
canvas_width = 500
canvas_height = 500
root = Toplevel()
root.geometry("700x600")
root.title("New Window")
canvas = Canvas(root, width=canvas_width, height=canvas_height)
canvas.create_text(1, 10, anchor=W, text=message)
img = ImageTk.PhotoImage(Image.open("virat.jpeg"))
canvas.create_image(0, 20, anchor=NW, image=img)
canvas.image = img
canvas.pack()
root.mainloop()

运行上面的代码时,它打印的是{The best Batsmen of the Tournament could possibly be:} {Virat Kohli}而不是The best Batsmen of the Tournament could possible be: Virat Kohli。那些花括号看起来很奇怪。谁能帮我解决这个错误?

2 个答案:

答案 0 :(得分:1)

它位于数据集中的集合或字典中。只需在显示之前将其转换为字符串即可:

string = ''.join(str(l) for l in list(name))

这可以解决集合中任意数量的元素。

答案 1 :(得分:0)

此代码将message设置为元组:

message = ("The best Batsman of the Tournament could possibly be: ",best_batsmen)

这将元组用作text属性的值,而无需将其转换为字符串

canvas.create_text(1, 10, anchor=W, text=message)

此值作为列表(从Tcl的角度)向下传递到底层tcl解释器。当tcl将列表转换为字符串时(在将其添加到画布之前必须执行此操作),它会添加花括号以保留其类似于列表的属性。

解决方案很简单:不要将列表或元组传递给tkinter函数。首先将它们明确转换为字符串:

message = " ".join(message)
canvas.create_text(1, 10, anchor=W, text=message)