Python Forum
[Tkinter] png porblem in python3 - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: GUI (https://python-forum.io/forum-10.html)
+--- Thread: [Tkinter] png porblem in python3 (/thread-11954.html)



png porblem in python3 - eufe - Aug-02-2018

Hello:
Sorry for my bad english.
I am a beginner of python.
I have made an application in python3 in windows 10 with tkinter and it works perfectly for me.
In Ubuntu 18.04 with python3 version 3.6.5 I get an error. I have tried with raspberry pi 3 with python3 version 3.5.3 and I have the same error.



This is the script:


import tkinter
from tkinter import *
import os

raiz=tkinter.Tk()
raiz.title("Ver png")
raiz.config(bg="White")

# medida ventana
w = raiz.winfo_screenwidth()
h = raiz.winfo_screenheight()

raiz.geometry("%dx%d+0+0" % (w, h))

# Bloqueo cambio tamaño pantalla
raiz.resizable(width=False, height=False)

directorio=os.path.dirname(__file__)
print(w,h,directorio)

Imagenfondo0=PhotoImage(file=directorio+"/Hydrisgrande.png")
canvas=tkinter.Canvas(raiz,width=w,height=h,bg="white")
canvas.place(x=1,y=1)
image = canvas.create_image(1, 1, anchor=NW, image=Imagenfondo0)



This is the error:

================ RESTART: /home/pi/Hydris/python/verimagen.py ================
1824 984 /home/pi/Hydris/python
Traceback (most recent call last):
File "/home/pi/Hydris/python/verimagen.py", line 21, in <module>
Imagenfondo0=PhotoImage(file=directorio+"/Hydrisgrande.png")
File "/usr/lib/python3.5/tkinter/__init__.py", line 3406, in __init__
Image.__init__(self, 'photo', name, cnf, master, **kw)
File "/usr/lib/python3.5/tkinter/__init__.py", line 3362, in __init__
self.tk.call(('image', 'create', imgtype, name,) + options)
_tkinter.TclError: couldn't open "/home/pi/Hydris/python/Hydrisgrande.png": no such file or directory

Thank you in advance for trying to help me


RE: png porblem in python3 - Axel_Erfurt - Aug-02-2018

Your image must be in the same folder with your script.


RE: png porblem in python3 - Gribouillis - Aug-02-2018

Python says that there is no file named /home/pi/Hydris/python/Hydrisgrande.png. You can check this in the file system. It is not a programming problem.


RE: png porblem in python3 - eufe - Aug-02-2018

I'm sorry .. I forgot to say that the png file is in the same directory where the script is.


RE: png porblem in python3 - Axel_Erfurt - Aug-02-2018

is the extension png or PNG ?

You have to pay attention to upper / lower case.


RE: png porblem in python3 - eufe - Aug-03-2018

It is all written correctly


RE: png porblem in python3 - Axel_Erfurt - Aug-03-2018

I've made a test, saved your script in /tmp, copied an image to tmp (named it Hydrisgrande.png)

and it works from my IDE, but not from Terminal.

You forgot raiz.mainloop() at the end.

import tkinter
from tkinter import *
import os

raiz=tkinter.Tk()
raiz.title("Ver png")
raiz.config(bg="White")

# medida ventana
w = raiz.winfo_screenwidth()
h = raiz.winfo_screenheight()

raiz.geometry("%dx%d+0+0" % (w, h))

# Bloqueo cambio tamaño pantalla
raiz.resizable(width=False, height=False)

directorio=os.path.dirname(__file__)
print(w,h,directorio)

Imagenfondo0=PhotoImage(file=directorio+"/Hydrisgrande.png")
canvas=tkinter.Canvas(raiz,width=w,height=h,bg="white")
canvas.place(x=1,y=1)
image = canvas.create_image(1, 1, anchor=NW, image=Imagenfondo0)
raiz.mainloop()
in Terminal, this works for me

import tkinter
from tkinter import *
import os

raiz=tkinter.Tk()
raiz.title("Ver png")
raiz.config(bg="White")

# medida ventana
w = raiz.winfo_screenwidth()
h = raiz.winfo_screenheight()

raiz.geometry("%dx%d+0+0" % (w, h))

# Bloqueo cambio tamaño pantalla
raiz.resizable(width=False, height=False)

directorio=os.path.dirname(__file__)
print(w,h,directorio)

picFile = "./Hydrisgrande.png"
Imagenfondo0=PhotoImage(file=picFile)
canvas=tkinter.Canvas(raiz,width=w,height=h,bg="white")
canvas.place(x=1,y=1)
image = canvas.create_image(1, 1, anchor=NW, image=Imagenfondo0)
raiz.mainloop()

use
directorio=os.path.dirname(os.path.abspath(__file__))
that works for me in both(IDE and Terminal)