我在标签小部件的文本周围得到了大括号。输出为{Total tries: 0}
,而不是Total tries: 0
。
以下是我的代码的简短版本:
class Cell:
def check(self):
mem.tries += 1
mem.update_tries()
class Memory(Frame):
def __init__(self, master):
super(Memory, self).__init__(master)
self.grid()
self.create_widgets()
self.tries = 0
def create_widgets(self):
self.label = Label(self)
self.label["text"] = "Total tries: 0",
self.label["font"] = ("Helvetica", 11, "italic")
self.label.grid(row = 7, columnspan = 7, pady = 5)
def update_tries(self):
self.label["text"] = "Total tries: " + str(self.tries)
root = Tk()
root.title("Memory")
root.geometry("365x355")
mem = Memory(root)
root.mainloop()
答案 0 :(得分:7)
self.label["text"] = "Total tries: 0",
该行末尾有一个逗号。逗号将分配给self.label["text"]
的值从字符串更改为元组。删除逗号,删除花括号。
答案 1 :(得分:0)
我不知道为什么会这样;但是,当我使用Tkinter时,我总是使用StringVar
或使用config
方法进行文本更新。 Here's一个包含一些示例的页面。
使用StringVar
:
# in class Memory
def create_widgets(self):
self.labelText = StringVar()
self.label = Label(self, textvariable = self.labelText)
... rest of method ...
def update_tries(self):
self.labelText.set("Total tries: " + str(self.tries))
答案 2 :(得分:0)
我遇到了类似的问题,但这些解决方案都不适合我。对于将来遇到此问题的任何人,我都会收到包含空格的文本错误,例如 "Health and Fitness"
将打印为 {Health and Fitness}
。
对我来说,解决方案是不实例化标签,例如:
score = 25
tk.Label(container, text=("Health and Fitness",score)).pack()
相反,就像这个:
toPrint = "Health and Fitness" + str(score)
tk.Label(container, text=toPrint).pack()