Tkinter如何创建图像?
我在Map类中初始化了一张图片,我不知道为什么,没有显示 我想完成一个飞机游戏, 这需要一个Map类和一个Planet类。我希望地图的背景图像与飞机的背景图像共存,但失败了 请注意地图中的init函数Tkinter如何创建图像?,tkinter,Tkinter,我在Map类中初始化了一张图片,我不知道为什么,没有显示 我想完成一个飞机游戏, 这需要一个Map类和一个Planet类。我希望地图的背景图像与飞机的背景图像共存,但失败了 请注意地图中的init函数 # -*- coding: utf-8 -*- from Tkinter import * from PIL import Image,ImageTk BG_W=852 BG_H=480 BG_C="green" class Map(object): def __init__(sel
# -*- coding: utf-8 -*-
from Tkinter import *
from PIL import Image,ImageTk
BG_W=852
BG_H=480
BG_C="green"
class Map(object):
def __init__(self):
self.tk=Tk()
self.tk.geometry("852x480")
self.tk.title("aircraft")
self.tk.resizable(width=False, height=False)
self.cv=Canvas(self.tk, bg=BG_C, height=BG_H, width=BG_W)
image1=Image.open("material/background.png")
bg_image = ImageTk.PhotoImage(image1)
self.bg=self.cv.create_image(427,240,image=bg_image)
self.cv.pack()
# self.tk.mainloop()
#self.cv.create_image(426, 400,image=ari_image)
def set_bg(self):
self.cv.delete(self.bg)
image1 = Image.open("material/background.png")
bg_image = ImageTk.PhotoImage(image1)
bg=self.cv.create_image(427, 240, image=bg_image)
self.cv.pack()
return bg
class Aircraft(object):
def __init__(self):
self._map=Map()
image1 = Image.open("material/hero1.png")
ari_image1 = ImageTk.PhotoImage(image1)
#===================================================
image2 = Image.open("material/hero2.png")
ari_image2 = ImageTk.PhotoImage(image2)
self.bgs=[ari_image1,ari_image2]
self.bg_count=len(self.bgs)
self.now_bg = 0
self.now_bg_view = self._map.cv.create_image(426,280,image=self.bgs[self.now_bg])
def start_game(self):
self.run()
self._map.tk.mainloop()
def run(self):
self.set_bg()
self._map.cv.after(200,self.run)
def select_bg(self):
pass
def set_bg(self):
self.del_bg()
self.now_bg +=1
if self.now_bg >= self.bg_count:
self.now_bg=0
self.now_bg_view=self._map.cv.create_image(426,400,image=self.bgs[self.now_bg])
def del_bg(self):
self._map.cv.delete(self.now_bg_view)
def app():
ari=Aircraft()
ari.start_game()
if __name__ == '__main__':
app()
我希望地图的背景图像与飞机的背景图像同时存在。根据大家的回答,我知道错误是因为没有参考图片,所以我可以通过修改以下内容来解决问题
self.ari_bg1 = ImageTk.PhotoImage(image_ari1)
self.ari_bg2 = ImageTk.PhotoImage(image_ari2)
使用self保留引用看起来您在地图类中没有像在飞机类中那样保留对图像的引用是的,我似乎指出这是问题所在,但我没有找到合适的解决方案。您说“但是失败了”。你为什么认为你失败了?该计划所做的与您期望的不同之处是什么?它会崩溃吗?它是否显示了错误的图像?图像是空白的吗?谢谢你的回答,程序没有崩溃,但没有按预期显示游戏背景图像,只显示飞机的背景图像。