In Tkinter, Canvas class is used to create different shapes with the help of some functions which are defined under Canvas class. Any shape that Canvas class creates requires a canvas, so before creating any shapes a Canvas object is required and needs to be packed to the main window.
Canvas Methods for shapes:
Canvas.create_oval(x1, y1, x2, y2, options = …): It is used to create a oval, pieslice and chord.
Canvas.create_rectangle(x1, y1, x2, y2, options = …): It is used to create rectangle and square.
Canvas.create_arc(x1, y1, x2, y2, options = …) This is used to create an arc.
Canvas.create_polygon(coordinates, options = …) THis is used to create any valid shapes.
We are using a class to show the working of functions that helps to creates different shapes.
Class parameters –
Data members used: master, canvas
Member functions used: create() method
Widgets used: Canvas
Tkinter method used:
Canvas.create_oval()
Canvas.create_rectangle()
Canvas.create_arc()
Canvas.create_polygon()
pack()
title()
geometry()
Below is the Python code –
Python3
# Imports each and every method and class # of module tkinter and tkinter.ttk from tkinter import * from tkinter.ttk import * class Shape: def __init__( self , master = None ): self .master = master # Calls create method of class Shape self .create() def create( self ): # Creates a object of class canvas # with the help of this we can create different shapes self .canvas = Canvas( self .master) # Creates a circle of diameter 80 self .canvas.create_oval( 10 , 10 , 80 , 80 , outline = "black" , fill = "white" , width = 2 ) # Creates an ellipse with horizontal diameter # of 210 and vertical diameter of 80 self .canvas.create_oval( 110 , 10 , 210 , 80 , outline = "red" , fill = "green" , width = 2 ) # Creates a rectangle of 50x60 (heightxwidth) self .canvas.create_rectangle( 230 , 10 , 290 , 60 , outline = "black" , fill = "blue" , width = 2 ) # Creates an arc of 210 deg self .canvas.create_arc( 30 , 200 , 90 , 100 , start = 0 , extent = 210 , outline = "green" , fill = "red" , width = 2 ) points = [ 150 , 100 , 200 , 120 , 240 , 180 , 210 , 200 , 150 , 150 , 100 , 200 ] # Creates a polygon self .canvas.create_polygon(points, outline = "blue" , fill = "orange" , width = 2 ) # Pack the canvas to the main window and make it expandable self .canvas.pack(fill = BOTH, expand = 1 ) if __name__ = = "__main__" : # object of class Tk, responsible for creating # a tkinter toplevel window master = Tk() shape = Shape(master) # Sets the title to Shapes master.title( "Shapes" ) # Sets the geometry and position # of window on the screen master.geometry( "330x220 + 300 + 300" ) # Infinite loop breaks only by interrupt mainloop() |
Output: