Python Forum
Adding an image to a tkinter window - 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: Adding an image to a tkinter window (/thread-28840.html)



Adding an image to a tkinter window - djwilson0495 - Aug-05-2020

Hi I'm trying to add an image to a tkinter window using the following code
from tkinter import * # gives access to tkinter GUI library

def hello():
    name = textbox1.get() # gets name from textbox1
    print = "Hello " + name # creates Hello name string 
    textbox2["text"] = print # prints that string in textbox2

window = Tk() # opens tkinter window
window.title("Names") # sets title of the window as names
window.geometry("1000x1000") # dimentions
window.wm_iconbitmap("Icon.ico") # changes tkinter window icon 
window.configure(background  = "black") # sets window background to green

logo = PhotoImage(file = "logo.gif") # displays logo.gif in a label widget
logoimage = Label(image = logo) # this can't be changed while the program is running 
logoimage.place(x = 50, y = 20, width = 200, height = 120) # position and dimentions

textbox1 = Entry(text = "") # creates textbox1 where data is entered 
textbox1.place(x = 145, y = 200, width = 125, height = 25) # position and dimentions
textbox1["bg"] = "white" # white background 
textbox1["fg"] = "black" # black font

label1 = Label(text = "Enter a name") # creates label with this text
label1.place(x = 20, y = 200, width = 125, height = 25) # position and dimentions
label1["bg"] = "red" # red background 
label1["fg"] = "blue" # blue font

textbox2 = Message(text = print) # creates textbox1 displaying the variable print
textbox2.place(x = 145, y = 250, width = 125, height = 25) # position and dimentions
textbox2["bg"] = "white" # white background 
textbox2["fg"] = "black" # black font

button1 = Button(text = "Press me", command = hello) # creates button which runs the hello sub-program
button1.place(x = 20, y = 250, width = 125, height = 25) # position and dimentions
button1["bg"] = "blue" # blue background 
button1["fg"] = "red" # red font

window.mainloop() # keeps program running 
but I get the following error saying that there is no such file or directory, however the image is saved in the same place as the program. Can anyone help?

Error:
File "c:/Users/djwil/Documents/python/learning python/Chapter 17 - more Tkinter/Ch17-c1.py", line 14, in <module> logo = PhotoImage(file = "logo.gif") # displays logo.gif in a label widget File "C:\Users\djwil\AppData\Local\Programs\Python\Python38-32\lib\tkinter\__init__.py", line 4061, in __init__ Image.__init__(self, 'photo', name, cnf, master, **kw) File "C:\Users\djwil\AppData\Local\Programs\Python\Python38-32\lib\tkinter\__init__.py", line 4006, in __init__ self.tk.call(('image', 'create', imgtype, name,) + options) _tkinter.TclError: couldn't open "logo.gif": no such file or directory



RE: Adding an image to a tkinter window - deanhystad - Aug-05-2020

Good job on the topic. Next time post GUI questions to the GUI part of this forum.

Also next time create a shorter example with the fewest number of external dependencies possible. People are more likely to offer help if you make it easy for them. This is all that's required to demonstrate your problem.
from tkinter import *
window = Tk()
logo = PhotoImage(file = "image.gif")
I took a .png file I had and converted to .gif and I get the same error you do. Then I changed the code to use the .png file and it works. Guess this is another incompatible file format problem. Interesting since effbot says .gif is a compatible format. Hmmmm.

If you want to work with images I think you should take a look at the Python Imaging Library (PIL). If you really want to do GUI programming I think you should look into something newer and better than Tk. Anything is newer and better than Tk.


RE: Adding an image to a tkinter window - ebolisa - Aug-23-2020

(Aug-05-2020, 08:48 PM)deanhystad Wrote: If you want to work with images I think you should take a look at the Python Imaging Library (PIL). If you really want to do GUI programming I think you should look into something newer and better than Tk. Anything is newer and better than Tk.

For example?