函数仅适用于python

时间:2018-09-27 10:56:23

标签: python function tkinter

我将tkinter用作带有函数的类,当我运行一个导致另一个功能的函数时,将bur用作bur,但又以再次运行第一个功能结束,但是原始功能不起作用。请帮助

def idle(self):
    self.next.destroy()
    self.info.destroy()

    self.prompt.configure(text=city_line + ", What do you want to do?")

    self.backpack = tk.Button(self, text="Backpack", command=self.backpack)
    self.shop = tk.Button(self, text="Shop")
    self.wander = tk.Button(self, text="Wander", command=self.wander)
    self.travel = tk.Button(self, text="Travel", command=self.travel)

    self.backpack.pack(side="right", padx=5, pady=5)
    self.shop.pack(side="right", padx=5, pady=5)
    self.wander.pack(side="right", padx=5, pady=5)
    self.travel.pack(side="right", padx=5, pady=5)

def backpack(self):
    self.backpack.destroy()
    self.shop.destroy()
    self.wander.destroy()
    self.travel.destroy()
    self.output.destroy()
    self.info = tk.Message(self, width=150, text=backpacke + ". Gold: " + str(gold))
    self.output = tk.Label(self, text="")

    self.next = tk.Button(self, text="Next", command=self.idle)
    self.info.pack(side="top", fill="x", pady=8)
    self.output.pack(side="top", fill="x", expand=True)
    self.next.pack(side="right", padx=5, pady=5)

1 个答案:

答案 0 :(得分:2)

创建类时,您有一个名为backpack的方法。在类内部,self.backpack引用此方法。调用此方法时,它会self.backpack = tk.Button(...)进行有效销毁,并将其替换为小部件。下次尝试调用self.backpack时,您将调用窗口小部件而不是方法。

您需要为保存窗口小部件的方法或变量选择一个不同的名称。