5

我的标签小部件中的文本周围有大括号。输出{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()
4

3 回答 3

8
self.label["text"] = "Total tries: 0",

行尾有一个逗号。逗号将分配的值self.label["text"]从字符串更改为元组。去掉逗号,花括号就被去掉了。

于 2011-11-28T22:06:51.293 回答
0

我不知道为什么会这样;但是,当我使用 Tkinter 时,我总是使用 aStringVar或使用该config方法进行文本更新。 这是 一个包含一些示例的页面。

使用 a 的示例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))
于 2011-11-28T22:01:52.977 回答
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()
于 2021-03-11T17:10:25.153 回答