Home > Software design >  How do I make a button with a function which rotates an image 180 Degrees?
How do I make a button with a function which rotates an image 180 Degrees?

Time:03-30

How do I make a button with a function which rotates an image 180 degrees? The variable my image is stored in is

img = ImageTk.PhotoImage("spidey.png")

I have already imported the PIL library's ImageTk and Image. I also want to place my image in the middle of my root window.

from tkinter import *

from PIL import ImageTK, Image root=Tk()

root.title("Image Viewer")

root.geometry("550x650")

root.configure(background="black")

img = ImageTk.PhotoImage("spidey.png")

def rotate():

root.mainloop()
This is my code so far. Please help me out. Thanks.

I tried to write Img.rotate(180_degrees) but it didn't work. I expected it to work the first time but it didn't. So again, please help me out.

CodePudding user response:

The rotation must be applied to the image after you call Image.open but before you call ImageTk.PhotoImage. The parameter passed to .rotate is just a number (representing degrees), so you'll also want Img.rotate(180) instead of Img.rotate(180_degrees).

import tkinter as tk
from PIL import ImageTk, Image

window = tk.Tk()
pic = Image.open("yourpic.png")
rotatedPic = pic.rotate(180)
finalPic = ImageTk.PhotoImage(rotatedPic)

label = tk.Label(master=window, image=finalImage)
label.place(x=0, y=0, width=200, height=200)

Note that you'll also need something to display the picture inside. You could use a canvas element and create_image, or (as in my example) use a widget with an image property and assign the rotated image to that property.

This was my source for the .rotate documentation: https://pythonexamples.org/python-pillow-rotate-image-90-180-270-degrees/

  • Related