【发布时间】:2016-09-23 05:11:45
【问题描述】:
我需要制作一个结束游戏的弹出窗口。弹出窗口可以在游戏类内部或外部。目前,它只关闭一个画布,当用户点击“关闭”时,我怎样才能让它自己关闭,画布和canvas2
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没有任何反应。还尝试将其放在课堂之外(并删除自我),但这也不起作用。已尝试在应用程序、root 上调用它......
标签: tkinter python-3.5