我想我的“退出”按钮关闭窗口,并结束程序,无论它被按下。现在它首先被按下,但如果首先按下“滚动”按钮,那么“退出”按钮不会关闭窗口。我是一名初学者程序员,所以我确信我的代码中存在不相关的问题,但是如果您能帮助我解决这个特定问题,请提前致谢!Python Tkinter - 退出按钮不工作,如果其他按钮先点击
from Tkinter import *
from random import randint
class Application(Frame):
def displayBoard(self):
self.canvas1 = Canvas(self, width=200, height=200)
self.canvas1.pack()
self.canvas2 = Canvas(self, width=200, height=200)
self.canvas2.pack()
self.roll_button = Button(self, text="Roll the Dice", command=self.roll)
self.roll_button.pack()
self.clear = Button(self, text="Clear", command=self.resetBoard)
self.clear.pack()
self.quit = Button(self, text="Quit", command=self.quit)
self.quit.pack()
def __init__(self, master=None):
Frame.__init__(self, master)
Pack.config(self)
def roll(self):
die1 = faces[(randint(1,6)-1)]
die2 = faces[(randint(1,6)-1)]
self.resetBoard()
self.canvas1.create_text(20, 30, anchor=W, text=die1)
self.canvas1.pack()
self.canvas2.create_text(20, 30, anchor=W, text=die2)
self.canvas2.pack()
def resetBoard(self):
self.canvas1.destroy()
self.canvas2.destroy()
self.clear.destroy()
self.roll_button.destroy()
self.quit.destroy()
self.displayBoard()
def quit(self):
self.master.quit()
self.master.destroy()
master = Tk()
face1 = """\n
__________
| |
| |
| () |
| |
|__________|
"""
face2 = """\n
__________
| |
| () |
| |
| () |
|__________|
"""
face3 = """ \n
__________
| |
| () |
| () |
| () |
|__________|
"""
face4 = """\n
__________
| |
| () () |
| |
| () () |
|__________|
"""
face5 = """ \n
__________
| |
| () () |
| () |
| () () |
|__________|
"""
face6 = """ \n
__________
| |
| () () |
| () () |
| () () |
|__________|
"""
faces = [face1, face2, face3, face4, face5, face6]
dicegame = Application()
dicegame.displayBoard()
dicegame.mainloop()
尝试重命名你的'退出()'函数;当你尝试重新设置开发板时,可能会发现'self.quit'是一个'Button',并且正在调用该按钮作为它的动作。可能会抛出一个只是沉默或内容的内部死亡参考。 – Delioth
@Delioth:这正是发生的事情。 'self.quit'在这段代码的不同时间意味着不同的事物。 –