Python canvas.delete(全部)不工作
我目前正在使用Python2.7在Tkinter中制作扑克游戏的图形部分,但目前在重新绘制画布时遇到了问题。出于某种原因,Python canvas.delete(全部)不工作,python,python-2.7,canvas,tkinter,Python,Python 2.7,Canvas,Tkinter,我目前正在使用Python2.7在Tkinter中制作扑克游戏的图形部分,但目前在重新绘制画布时遇到了问题。出于某种原因,self.canvas.delete(全部)不会删除我的按钮或背景图像标签。我在我的redrawALL()函数中尝试了pack\u-forget(),但这似乎也不起作用 from Tkinter import * class PokerGame(object): def __init__(self): self.run() def run(
self.canvas.delete(全部)
不会删除我的按钮或背景图像标签。我在我的redrawALL()
函数中尝试了pack\u-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
Canvas没有由
self.Canvas.create.*()
()添加的元素
可能您想删除按钮
不要同时使用.pack()
,.place()
,.grid()
。他们是三个不同的布局管理器
使用.pack()
或.place()
或.grid()
您已经对元素使用了.place()
,因此必须使用.place\u forget()
工作代码:
from Tkinter import *
class PokerGame(object):
def __init__(self):
self.run()
def run(self):
self.root = Tk()
self.root.title("PyPoker")
self.root.geometry("1280x720")
#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.place(x = 0, y = 0, relwidth = 1, relheight = 1)
self.btnPlay = Button(self.root, text = "Play", command = self.playGame)
self.btnPlay.place(relheight = 0.1, relwidth = 0.1, relx = 0.5, rely = 0.4, anchor = CENTER)
self.btnInstructions = Button(self.root, text = "How To Play", command = self.showInstructions)
self.btnInstructions.place(relheight = 0.1, relwidth = 0.1, relx = 0.5, rely = 0.5, anchor = CENTER)
def playGame(self):
self.redrawAll()
def showInstructions(self):
self.redrawAll()
def redrawAll(self):
print "trying to delete all"
self.btnPlay.place_forget()
self.btnInstructions.place_forget()
self.bgLabel.place_forget()
PokerGame()
那么,最后一个问题是什么?现在什么不起作用了?画布中没有任何东西可以删除,因为你从未在self中放置过任何东西。画布…至少在你发布的代码中没有。好吧,我可以理解,实际上没有向画布添加任何东西,但我也无法使任何按钮与我刚刚编辑的pack_forget()一起消失。哦,天哪,非常感谢你。我不知道他们应该分开。谢谢。@user3006675顺便说一句:如果不向画布添加元素,可以使用
self.root.geometry(“1280x720”)
代替画布。@user3006675顺便说一句:组织良好的代码。而且您不必在函数末尾使用(空)return
。