Skip to content Skip to sidebar Skip to footer

Adding Image To Tkinter

I have added a image file to my code in tkinter but it basically fills my the whole frame so if its possible can you recommend a tutorial that shows or explains how to do this....

Solution 1:

You could try something like this:

from Tkinter import *
from glob import glob

class ImageFrame(Frame):

    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.images = glob("*.gif")
        self.cur = 0
        # label showing the image
        self.image = PhotoImage()
        imagelabel = Label(self, image=self.image)
        imagelabel.grid(row=1, column=1)
        # button cycling through the images
        button = Button(self, text="NEXT", command=self.show_next)
        button.grid(row=2, column=1)
        # layout and show first image
        self.grid()
        self.show_next()

    def show_next(self):
        self.cur = (self.cur + 1) % len(self.images)
        self.image.configure(file=self.images[self.cur])

ImageFrame().mainloop()

Some explanations:

  • glob is used to get a list of all files matching some pattern in the current directory
  • grid is a simple but quite flexible layout manager for Tkinter (see Tkinter reference)
  • the show_next method, which is bound to the button, cycles through the images and binds a new image to the PhotoImage using configure

The result is a simple frame showing a large image and a button, cycling though the gif images in the current directory.


Solution 2:

There are numerous modules that would help you out with this. You can use the PIL module. Typically what I would do in a situation like yours is use the PIL module to load and paste the image onto the frame. This is how you do this.

from Tkinter import *
from PIL import Image, ImageTk
root = Tk()
Image       = Image.open(path).resize((300, 300)), Image.ANTIALIAS
ButtonImage = ImageTk.PhotoImage(Image)
# If you are using image by itself. Without it being a button. 
#Image_Label = Label(image = self.HomeImage, borderwidth=0, highlightthickness=0)
# Otherwise 
testButton = Button(root, image=ButtonImage)
testButton.pack()
root.mainloop()

I believe that this would definitely help you with resizing the image and loading an image to the screen as a button. We used PIL to load the image onto the frame and resized the image. This is What you were also asking for earlier. I used the resize method on the Image.open() Function. This resizes the image to what you want. The standards are the actual sizes of that image.


Post a Comment for "Adding Image To Tkinter"