12

I am working on a game project for school, which look like this : In-game aspect

 In-game aspect

I have created these colored polygons like this :

ship = can.create_polygon(410,650,450,600,490,650 , fill= 'red' , outline='black')

ennemies = can.create_rectangle(x-r, y-r, x+r, y+r, fill='green')

So now i want to fill them with my own image. Is that possible ? And how ?

Mahendra Gunawardena
  • 1,956
  • 5
  • 26
  • 45
Milky_Way
  • 149
  • 1
  • 2
  • 7

1 Answers1

27
try:
    import tkinter as tk
    from tkinter.constants import *
except ImportError:  # Python 2.x
    import Tkinter as tk
    from Tkconstants import *

# Create the canvas, size in pixels.
canvas = tk.Canvas(width=300, height=200, bg='black')

# Pack the canvas into the Frame.
canvas.pack(expand=YES, fill=BOTH)

# Load the .gif image file.
gif1 = tk.PhotoImage(file='small_globe.gif')

# Put gif image on canvas.
# Pic's upper-left corner (NW) on the canvas is at x=50 y=10.
canvas.create_image(50, 10, image=gif1, anchor=NW)

# Run it...
tk.mainloop()
martineau
  • 119,623
  • 25
  • 170
  • 301
  • 2
    I don't think you understood what i want to do : i want to insert an image in the `canvas.create_rectangle`, not in the canvas. – Milky_Way Mar 24 '17 at 21:51
  • 3
    @Milky_Way: you can't insert an image in a rectangle. You can certainly put a rectangle and an image on the canvas in such a way that the rectangle surrounds the image. Regardless, the first step is to use `create_image` as shown in this answer. – Bryan Oakley Mar 24 '17 at 23:42
  • 3
    Milky_Way: You're right, I misunderstood. Since images are rectangular, you don't really need to put them into a rectangle. If you need to resize them, you can use the `PIL` module's `tkinter`-compatible [`PIL.ImageTk.PhotoImage`](http://pillow.readthedocs.io/en/4.0.x/reference/ImageTk.html#PIL.ImageTk.PhotoImage) class instead of a `tkinter.PhotoImage`. The later can also be used to read and display image files in formats that `tkinter` doesn't directly support. – martineau Mar 25 '17 at 01:36
  • 1
    It cost me quite a while to get that gif1 shall be either global var or some other way made sure it was not GC-ed – Vladimir Zolotykh Mar 23 '23 at 23:14