Python Forum

Full Version: Error trying to draw a gif with graphics.py
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hey guys im sort of a noob at python and im really struggling with this. Im try to draw a image in a function but for some reason it doesnt work I dont know why please help I have the image in the same folder as my code.
Code:

import graphics,pygame
from graphics import*
from pygame import*

##Variables##
x,y=0,0 #positions of mouse clicks
p1 = GraphWin("Tut",1440,900)
exit1 = Rectangle(Point(40,40),Point(10,10))
start1 = Rectangle(Point(200,200),Point(100,100))
txt1 = Text(exit1.getCenter(),'Exit')
p=p1.checkMouse()
choices,error=0,0

##Program##
choices=Text(Point(p1.getWidth()/2,p1.getHeight()/2 +50),'Enter f to continue')
choices.setTextColor('white')
choices.setSize(24)
choices.draw(p1)
entry1=Entry(Point(p1.getWidth()/2, p1.getHeight()/2+100),1)
entry1.draw(p1)
error=Text(Point(p1.getWidth()/2,300),'You need to enter a correct choice.')
#_______________________________________________________________#
##Exit Button##

p1.setBackground('blue')

exit1.draw(p1)
exit1.setFill('Red')
exit1.setWidth(1)
txt1.draw(p1)

while True:
p=p1.checkMouse()
if p:
x=p.getX()
y=p.getY()
print(x,y)
if 10<x<40 and 10<y<40 :
p1.close()
elif p:
break
#_______________________________________________________________#
##Picture##
def Fight():
pic=Image(Point(p1.getWidth()/2,p1.getHeight()/2),'Ion.gif')
pic.draw(p1)

while True:
p1.getMouse()
choice=entry1.getText()
if choice=="f":
choices.undraw()
entry1.undraw()
error.undraw()
Fight()
break
else:
error.setTextColor('white')
error.setSize(24)
error.draw(p1)

Here is the error:
Traceback (most recent call last):
File "H:\Python Coding\tut.py", line 58, in <module>
Fight()
File "H:\Python Coding\tut.py", line 48, in Fight
pic=Image(Point(p1.getWidth()/2,p1.getHeight()/2),'Ion.gif')
File "H:\Python Coding\graphics.py", line 885, in __init__
self.img = tk.PhotoImage(file=pixmap[0], master=_root)
File "C:\Python32\lib\tkinter\__init__.py", line 3287, in __init__
Image.__init__(self, 'photo', name, cnf, master, **kw)
File "C:\Python32\lib\tkinter\__init__.py", line 3243, in __init__
self.tk.call(('image', 'create', imgtype, name,) + options)
_tkinter.TclError: couldn't open "Ion.gif": no such file or directory
Please put your code in Python code tags and full error traceback message in error tags. You can find help here.
(May-28-2018, 05:21 PM)j.crater Wrote: [ -> ]Please put your code in Python code tags and full error traceback message in error tags. You can find help here.

My apologizes but i believe I cant edit this as im just a user and not a member
Hey guys im sort of a noob at python and im really struggling with this. Im try to draw a image in a function but for some reason it doesnt work I dont know why please help I have the image in the same folder as my code.

import graphics,pygame
from graphics import*
from pygame import*

##Variables##
x,y=0,0 #positions of mouse clicks
p1 = GraphWin("Tut",1440,900)
exit1 = Rectangle(Point(40,40),Point(10,10))
start1 = Rectangle(Point(200,200),Point(100,100))
txt1 = Text(exit1.getCenter(),'Exit')
p=p1.checkMouse()
choices,error=0,0

##Program##
choices=Text(Point(p1.getWidth()/2,p1.getHeight()/2 +50),'Enter f to continue')
choices.setTextColor('white')
choices.setSize(24)
choices.draw(p1)
entry1=Entry(Point(p1.getWidth()/2, p1.getHeight()/2+100),1)
entry1.draw(p1)
error=Text(Point(p1.getWidth()/2,300),'You need to enter a correct choice.')
#_______________________________________________________________#
##Exit Button##

p1.setBackground('blue')

exit1.draw(p1)
exit1.setFill('Red')
exit1.setWidth(1)
txt1.draw(p1)

while True:
p=p1.checkMouse()
if p:
x=p.getX()
y=p.getY()
print(x,y)
if 10<x<40 and 10<y<40 :
p1.close()
elif p:
break
#_______________________________________________________________#
##Picture##
def Fight():
pic=Image(Point(p1.getWidth()/2,p1.getHeight()/2),'Ion.gif')
pic.draw(p1)

while True:
p1.getMouse()
choice=entry1.getText()
if choice=="f":
choices.undraw()
entry1.undraw()
error.undraw()
Fight()
break
else:
error.setTextColor('white')
error.setSize(24)
error.draw(p1)
Error:
Traceback (most recent call last): File "H:\Python Coding\tut.py", line 58, in <module> Fight() File "H:\Python Coding\tut.py", line 48, in Fight pic=Image(Point(p1.getWidth()/2,p1.getHeight()/2),'Ion.gif') File "H:\Python Coding\graphics.py", line 885, in __init__ self.img = tk.PhotoImage(file=pixmap[0], master=_root) File "C:\Python32\lib\tkinter\__init__.py", line 3287, in __init__ Image.__init__(self, 'photo', name, cnf, master, **kw) File "C:\Python32\lib\tkinter\__init__.py", line 3243, in __init__ self.tk.call(('image', 'create', imgtype, name,) + options) _tkinter.TclError: couldn't open "Ion.gif": no such file or directory
you don't need line 1 as lines 2 and 3 load all
You have no indentation after line 48.
functions, methods, iterators need indentation (4 spaces per level)
Thank you very much I appreciate it!
(May-28-2018, 08:48 PM)Larz60+ Wrote: [ -> ]you don't need line 1 as lines 2 and 3 load all
You have no indentation after line 48.
functions, methods, iterators need indentation (4 spaces per level)

This didnt work. Could you provide an example of what you mean because I may be doing it wrong or misunderstanding you
you show code as :
while True:
p1.getMouse()
choice=entry1.getText()
if choice=="f":
choices.undraw()
entry1.undraw()
error.undraw()
Fight()
break
else:
error.setTextColor('white')
error.setSize(24)
error.draw(p1)
needs to be indented
while True:
    p1.getMouse()
    choice=entry1.getText()
    if choice=="f":
        choices.undraw()
        entry1.undraw()
        error.undraw()
        Fight()
        break
    else:
        error.setTextColor('white')
        error.setSize(24)
        error.draw(p1)
The code may still be bad, but you need this indentation

on import you only need:
from graphics import*
from pygame import*
But I wouldn't do it this way (for future reference) better to import what you specifically need
(May-29-2018, 05:28 PM)Larz60+ Wrote: [ -> ]you show code as :
while True:
p1.getMouse()
choice=entry1.getText()
if choice=="f":
choices.undraw()
entry1.undraw()
error.undraw()
Fight()
break
else:
error.setTextColor('white')
error.setSize(24)
error.draw(p1)
needs to be indented
while True:
    p1.getMouse()
    choice=entry1.getText()
    if choice=="f":
        choices.undraw()
        entry1.undraw()
        error.undraw()
        Fight()
        break
    else:
        error.setTextColor('white')
        error.setSize(24)
        error.draw(p1)
The code may still be bad, but you need this indentation

on import you only need:
from graphics import*
from pygame import*
But I wouldn't do it this way (for future reference) better to import what you specifically need

Ohhhh..... Yay all my stuff is indented properly I just forgot to do it here so that not the issue. im really confused now, I have done this before and im looking back on it and im doing the same here as i did there and there are no issues. But yet there is issues here for some reason.