我正在尝试在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
。那些花括号看起来很奇怪。谁能帮我解决这个错误?
答案 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)