python-3.x - 伙计们,我在尝试完成这项工作时遇到了很多麻烦,itemconfig 无法正常工作
问题描述
import random
from tkinter import *
import time
class game:
def __init__(self,widthh,heighht):
self.tk=Tk()
self.canvas=Canvas(self.tk, width=widthh, height=heighht )
self.canvas.pack()
self.background=PhotoImage(file="C:/Users/ryantan/Desktop/python/run for your life/player sprite/player1.gif")
self.over=self.canvas.create_image(200,200,image = self.background, anchor = 'center')
self.tk.update()
def mainloop(self):
while True:
self.tk.update()
g=game(1000,400)
g.canvas.itemconfig(g.over,image = PhotoImage(file="C:/Users/ryantan/Desktop/python/run for your life/player sprite/player2.gif"))
g.mainloop()
解决方案
您的代码不起作用,因为您没有保留对在itemconfig
. 垃圾收集器需要知道你想要保留这个对象。您可以在此处查看文档。
我已经删除了您的更新循环,因为这不是必需的。Tk.mainloop()
会为你处理的。
from tkinter import *
class Game:
def __init__(self, width, height):
self.tk = Tk()
self.canvas = Canvas(self.tk, width=width, height=height)
self.canvas.pack()
self.background = PhotoImage(
file="C:/Users/ryantan/Desktop/python/run for your life/player sprite/player1.gif"
)
self.over = self.canvas.create_image(
200, 200, image=self.background, anchor='center'
)
def mainloop(self):
self.tk.mainloop()
if __name__ == '__main__':
g = Game(1000, 400)
new_image = PhotoImage(file="C:/Users/ryantan/Desktop/python/run for your life/player sprite/player2.gif")
g.canvas.itemconfig(
g.over,
image=new_image
)
g.mainloop()
推荐阅读
- r - 在R中为卡方生成pdf
- javascript - 在其中一个内部返回后,快递中的中间件调用没有停止
- python - 根据另一列的当前行和同一列的上一行递增一列的值
- ssl - Hashicorp Consul - 如何从 Kubernetes 集群中的 Pod 中执行经过验证的 TLS
- laravel - 使用 Spate 媒体库时出错:“BadMethodCallException 调用未定义的方法 Illuminate\Foundation\Auth\User::addMediaFromRequest()”
- angular - 背景图片网址在我的角度项目中不起作用
- html - 使用 HTTP post 方法而不是 DELETE 是否有任何危害
- c# - 更新 UnitAmount of Stripe 结帐价格
- javascript - office-ui-fabric / fluent-ui Grouped DetailsList
- docker - 如何使用 H2 数据库容器化一个简单的 Java 应用程序