Функция работает только один раз Python - PullRequest
0 голосов
/ 27 сентября 2018

Я использую tkinter как класс с функцией, но когда я запускаю одну функцию, которая приводит к другой функции, которая снова заканчивается запуском первой функции, но тогда исходная функция не работает.пожалуйста помогите

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 голосов
/ 27 сентября 2018

Когда ваш класс создан, у вас есть метод с именем backpack.Внутри класса self.backpack относится к этому методу.Когда этот метод вызывается, он делает self.backpack = tk.Button(...), который эффективно уничтожает метод и заменяет его виджетом.В следующий раз, когда вы попытаетесь вызвать self.backpack, вы вызываете виджет, а не ваш метод.

Вам нужно выбрать другое имя для метода или переменной, содержащей виджет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...