Python Forum
Create image on a Toplevel using tkinter
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Create image on a Toplevel using tkinter
#1
I'm using tkinter to create a login system. The main window goes as:

my_window=tkinter.Tk()
my_window.title('Welcome To Login System 1.0 !')
my_window.geometry('639x591')

my_canvas=tkinter.Canvas(my_window, height=639, width=591)
welcome_image=ImageTk.PhotoImage(Image.open('welcome2.png'))
image=my_canvas.create_image(0,0, anchor='nw',image=welcome_image)
my_canvas.pack(side='top')
and it works pretty fine.
But when I try to load an image on a Toplevel, the sub-window just keeps blank no matter how I change the pic:

signup_window=tkinter.Toplevel(my_window)
signup_window.geometry('500x400')
signup_window.title('Sign up now')

signup_canvas = tkinter.Canvas(signup_window, height=500, width=400)
signup_image = ImageTk.PhotoImage(Image.open('signup_bg.png'))
image2 = signup_canvas.create_image(0, 0, anchor='nw', image=signup_image)
signup_canvas.pack(side='top')
Don't know what goes wrong. I use the PIL module to load the image.
Reply
#2
Instead of using PIL I used tkinter.PhotoImage(file='imagefile') . When I ran your code I got two windows with two images. Maybe your signup_bg.png image file is bad.
Reply
#3
(Jun-03-2020, 12:00 PM)deanhystad Wrote: Instead of using PIL I used tkinter.PhotoImage(file='imagefile') . When I ran your code I got two windows with two images. Maybe your signup_bg.png image file is bad.
I fixed it by adding one line:
global signup_image
Guess it's because of the garbage collection force or something.
Reply
#4
I don't think garbage collection is the problem here. You get the garbage collection problem when you create an image in a function or method and use a local variable to reference the image. When the function exits all the local variables are deleted, there is nothing referencing the image, and it becomes available for garbage collection. Your code is not doing that. Your variables are not getting deleted, you image variable continues to reference your image, and your image should not get garbage collected.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  [Tkinter] Images in Toplevel() finndude 3 44 2 hours ago
Last Post: deanhystad
  tkinter button image Nick_tkinter 4 111 Mar-04-2021, 11:33 PM
Last Post: deanhystad
  how to resize image in canvas tkinter samuelmv30 2 553 Feb-06-2021, 03:35 PM
Last Post: joe_momma
  Latex image too big on tkinter using sympy 4096 1 324 Nov-05-2020, 08:05 AM
Last Post: DPaul
Photo Tkinter TEXT background image _ShevaKadu 5 1,420 Nov-02-2020, 10:34 AM
Last Post: joe_momma
  tkinter: Image to Label Maryan 10 666 Oct-29-2020, 01:48 PM
Last Post: joe_momma
  Scrollable big image in a window (TKinter) Prospekteur 3 453 Sep-14-2020, 03:06 AM
Last Post: Larz60+
  Adding an image to a tkinter window djwilson0495 2 1,685 Aug-23-2020, 11:07 AM
Last Post: ebolisa
  [PyQt] Create exe file including referenced image (*.png) files mart79 0 324 Jul-21-2020, 09:49 AM
Last Post: mart79
  Tkinter: Create an homepage look like PeroPuri 8 1,600 Jun-26-2020, 12:57 AM
Last Post: menator01

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020