Мне нужно создать всплывающее окно, которое закончит игру. Всплывающее окно может быть либо внутри, либо вне игрового класса. На данный момент, он закрывает только один холст, как я могу сделать его закрыть себя, холст и canvas2, когда пользователь нажимает кнопку «Закрыть»Закрытие игры (объект) из tkinter popup
from tkinter import *
import tkinter as tk
class Game(object):
def __init__(self, master):
master.title("Game")
self._master = master
self._canvas2 = tk.Canvas(master, bg='grey', width=300, height=50)
self._canvas2.pack()
self._canvas = tk.Canvas(master, bg='grey', width=300, height=200)
self._canvas.pack()
#if conditions met, open popup:
self.popup()
def popup(self):
end = Toplevel()
end.title("End")
msg = Message(end, text="The game has ended")
msg.pack()
button = Button(end, text="Close", command=self._canvas.destroy)
button.pack()
def main():
root = tk.Tk()
app = Game(root)
root.mainloop()
if __name__ == '__main__':
main()
Другие варианты я пытался: command=self.destroy
, command=self.exit()
, command=self.quit()
Обратите внимание: игра должна быть объектом из-за ограничений назначения. Для меня также были предусмотрены инициализации внизу. Всплывающее окно не обязательно должно быть окном верхнего уровня (но ему нужно использовать tkinter), это только тот, который я попытался реализовать.
вы пытались создать свою собственную функцию, которая удаляет как холсты, и вызов этой функции из вашей кнопки? –
Просто попробовал, не повезло. 'command = self.close()', 'def close (self):', 'self._canvas.destroy, self._canvas2.destroy' Ничего не происходит. Также попытался поставить его вне класса (и удалить self), но это также не работает. Попробовали позвонить ему на приложение, root .... – 009