【发布时间】:2016-03-23 15:15:41
【问题描述】:
我已经搜索过,没有找到关于这个主题的内容,所以我会在这里问。
我开始开发非常基本的游戏,我想将图片加载到我的背景中。我正在使用 Python 上的电子书来帮助我做到这一点,根据它,以下代码是正确的:
from tkinter import *
import time
import random
Width = 1000
Height = (Width/12)*9
class Game:
def __init__(self):
self.tk = Tk()
self.tk.title("Monster Rush")
self.tk.resizable(0, 0)
self.tk.wm_attributes("-topmost", 1)
self.canvas = Canvas(self.tk, width=Width, height=Height, highlightthickness=0)
self.canvas.pack()
self.tk.update()
self.canvas_height = 500
self.canvas_width = 500
self.bg = PhotoImage(file="anipedra.gif")
w = self.bg.width()
h = self.bg.height()
for x in range(0, 5):
for y in range(0, 5):
self.canvas.create_image(x * w, y * h, image=self.bg, anchor='nw')
self.sprites = []
self.running = True
def mainloop(self):
while 1:
if self.running == True:
for sprite in self.sprites:
sprite.move()
self.tk.update_idletasks()
self.tk.update()
time.sleep(0.01)
class Enemy(Game):
def __init__(self):
self.e = Game()
self.e.mainloop()
class Player(Game):
def __init__(self):
self.e = Game()
self.e.mainloop()
Troll = Enemy()
Grunt = Enemy()
Minion = Enemy()
Player = Player()
但是每次我运行这个:
- 如果是 .gif,IDLE 通常会显示:
Traceback (most recent call last):
File "C:\Users\Nuno\Desktop\Python\Projectos\Monster Rush\Monster Rush (T.D.).py", line 47, in <module>
Troll = Enemy()
File "C:\Users\Nuno\Desktop\Python\Projectos\Monster Rush\Monster Rush (T.D.).py", line 39, in __init__
self.e = Game()
File "C:\Users\Nuno\Desktop\Python\Projectos\Monster Rush\Monster Rush (T.D.).py", line 20, in __init__
self.bg = PhotoImage(file="background.gif")
File "C:\Users\Nuno\AppData\Local\Programs\Python\Python35\lib\tkinter\__init__.py", line 3393, in __init__
Image.__init__(self, 'photo', name, cnf, master, **kw)
File "C:\Users\Nuno\AppData\Local\Programs\Python\Python35\lib\tkinter\__init__.py", line 3349, in __init__
self.tk.call(('image', 'create', imgtype, name,) + options)
_tkinter.TclError: couldn't recognize data in image file "background.gif"
-
如果是上述代码中的.gif(或其他任何格式):
文件停止响应并崩溃。
谁能帮帮我?
【问题讨论】:
-
TCL 图像类对某些图像类型有困难,请查看
PIL(python 图像库)和它的替换pillowpypi.python.org/pypi/Pillow/3.1.1 -
您确定您的文件实际上是 gif 文件,还是您只是将文件从 .png 重命名为 .gif?
-
为什么要创建四个根窗口?敌人和玩家真的应该在一个单独的窗口中吗?
标签: python image tkinter tkinter-canvas