我目前正在用Python2.7在Tkinter中制作一个扑克游戏的图形部分,但是我现在在重新绘制画布时遇到了麻烦。由于某些原因,self.canvas.delete(ALL)
不会删除我的按钮或背景图像标签。我尝试过在我的redrawALL()
函数中使用pack_forget()
,但似乎也不起作用。在
from Tkinter import *
class PokerGame(object):
def __init__(self):
self.run()
def run(self):
self.root = Tk()
self.root.title("PyPoker")
self.width = 1280
self.height = 720
self.canvas = Canvas(self.root, width = self.width, height = self.height)
self.canvas.pack()
self.drawStartScreen()
self.root.mainloop()
def drawStartScreen(self):
self.bgImage = PhotoImage(file = 'startbg.gif')
self.bgLabel = Label(self.root, image = self.bgImage)
self.bgLabel.pack()
self.bgLabel.place(x = 0, y = 0, relwidth = 1, relheight = 1)
self.btnPlay = Button(self.root, text = "Play", command = self.playGame)
self.btnInstructions = Button(self.root, text = "How To Play", command = self.showInstructions)
self.btnPlay.pack()
self.btnInstructions.pack()
self.btnPlay.place(relheight = 0.1, relwidth = 0.1, relx = 0.5, rely = 0.4, anchor = CENTER)
self.btnInstructions.place(relheight = 0.1, relwidth = 0.1, relx = 0.5, rely = 0.5, anchor = CENTER)
return
def playGame(self):
self.redrawAll()
return
def showInstructions(self):
self.redrawAll()
return
def redrawAll(self):
print "trying to delete all"
self.canvas.delete(ALL)
self.btnPlay.pack_forget()
self.btnInstructions.pack_forget()
return
画布没有
self.canvas.create_*()
(http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/canvas.html)添加的元素也许你想去掉按钮。在
不要同时使用
.pack()
、.place()
、.grid()
。他们是三个不同的布局管理器。在使用}或{}
.pack()
或{您已经将
.place()
用于元素,因此必须使用.place_forget()
工作代码:
相关问题 更多 >
编程相关推荐