pythontkinter:用图像实验室替换图像按钮

2024-10-03 06:22:22 发布

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

嗨,我正在尝试做一个代码,当一个图像按钮被按下时,它会用一个图像标签来代替一个图像按钮。但是窗口没有更新,所以新图像不可见。有人能帮我吗?如果有可能的话。在

我正在尝试的代码是:

from tkinter import *
import time

gifdir = "./"
class Game:
   def __init__(self):
      self.__window = Tk()



      igm = PhotoImage(file=gifdir+"empty.gif")

      Button(self.__window, image=igm, command= self.change_picture)\
      .grid(row=1, column=2, sticky=E)

      def change_picture():
        igm = PhotoImage(file=gifdir+"new.gif")
        Label(self.__window, image=igm,)\
        .grid(row=1, column=2, sticky=E)

       self.__window.mainloop()

def main():
    Game()


main()

当我把这个代码加到末尾时:

^{pr2}$

新图片会显示一秒钟,但我需要一直看到它,并且还能按其他按钮。在


Tags: 代码图像imageimportselfgamedefwindow
1条回答
网友
1楼 · 发布于 2024-10-03 06:22:22

我修改了你的代码,因为你的代码设计非常奇怪,而且IMO不正确。这是修改后的版本:

from tkinter import *

import time

class Game:
    def __init__(self):
        self.__window = Tk()

        self.gifdir = "./"

        self.igm = PhotoImage(file=self.gifdir+"empty.gif")

        self.btn = Button(self.__window, image=self.igm, command = self.change_picture)
        self.btn.grid(row=1, column=2, sticky=E)

        self.__window.mainloop()                

    def change_picture(self):
        self.igm = PhotoImage(file=self.gifdir+"new.gif")
        self.btn.configure(image = self.igm)              


def main():
    Game()


main()

在这个新版本中,按下按钮,会改变它上面的图像。基本上,在类中,需要保留对已创建小部件的引用。尤其是为PhotoImage保留引用很重要,就像没有保留引用一样,垃圾回收器将删除该映像,PhotoImage的实例将超出change_picture中的作用域。在

相关问题 更多 >