画布.删除(全部)不工作

2024-10-01 10:17:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在用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

Tags: selfreturndefplacerootdeletewidthpack
1条回答
网友
1楼 · 发布于 2024-10-01 10:17:17

画布没有self.canvas.create_*()http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/canvas.html)添加的元素

也许你想去掉按钮。在

不要同时使用.pack().place().grid()。他们是三个不同的布局管理器。在

使用.pack()或{}或{}

您已经将.place()用于元素,因此必须使用.place_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()

相关问题 更多 >