How to create canvas widget in Tkinter Python

share link

by Dejaswarooba dot icon Updated: Sep 14, 2023

technology logo
technology logo

Guide Kit Guide Kit  

The Canvas widget in Python Tkinter is incredibly powerful and flexible. It allows you to create custom graphics, sketching tools, and complex widgets.

It provides a coordinate system for positioning canvas items within the canvas widget. The canvas coordinate system defines item positions using coordinates. It includes methods for managing display and scrolling like view, window, and screenx. It also supports line width, length, outline style, and fill color options. This can customize the appearance of items.  

The canvas widget implements freehand sketching tools for Sketchpad programs or drawing tools. It can also implement CAD-like functionalities. You can use different item types to create shapes like rectangles, polygons, and arcs. Additionally, you can work with bounding boxes to define canvas item areas precisely.  

You can use the canvas widget to control the mouse keyboard and make it move. This enables interactivity with canvas items. For instance, you can select and manipulate items based on mouse clicks and positions.  

To scroll the canvas, use the scrollbars and choose the scroll region option. This specifies the scrollable area. Furthermore, the canvas supports stipple patterns. It also supports transparency effects and various drawing tools like arrows and lines.  

To create a canvas widget in Python using the Tkinter library, import tkinter with   

from tkinter import *   


import tkinter.  

You can create the main Tkinter window using the `tk.Tk()` constructor. After that, create the canvas widget using the `tk.Canvas()` constructor. Also, specify its width and height in pixels.   

For instance, you can create a canvas with a width of 400 pixels and a height of 300 pixels. Canvas = tk.Canvas(root, width=400, height=300)  

To display the canvas, you can add it to the main window using one of the geometry managers, such as `pack()`, `grid()`, or `place()`. For example, using the' pack' geometry manager, you can use `canvas.pack()` to add the canvas to the main window.  

Run the Tkinter main loop to make the Tkinter application visible and responsive. Call the `root.mainloop()`. This loop continuously listens for events and updates the GUI accordingly. It allows the canvas and other widgets to respond to user interactions.  

You can utilize event binding to add events to a canvas widget in Tkinter. It is a powerful mechanism that associates specific functions with events. For instance, use the' bind' method to handle mouse clicks on the canvas. This links it to a custom function that executes when a left mouse click occurs. The function can respond by printing the click coordinates.   

For shape movements, you would first need to implement the logic for moving the shape. Then, bind the necessary events to the canvas. For example, you can create a rectangle on the canvas. Then, use event binding to respond to mouse clicks on the shape and subsequent dragging of the shape. The program saves the click's coordinates when the user clicks on the rectangle. When you drag the mouse, update the shape's position based on the movement distance.  

By event binding, your canvas application becomes interactive and responsive to user actions. This includes button clicks or dynamic shape movements. This capability improves user experience and enables engaging graphical applications.  

Preview of the output that you will get on running this code from your IDE


This code uses the `tkinter` library to create a 200x200 pixel white canvas. It draws a line from coordinates (0,0) to (100,100) on the canvas, forming a diagonal line. The `mainloop()` function keeps the GUI running until it's closed by the user.

Follow the steps carefully to get the output easily.

  • Download and install VS Code on your desktop.
  • Open VS Code and create a new file in the editor.
  • Copy the code snippet that you want to run, using the "Copy" button or by selecting the text and using the copy command (Ctrl+C on Windows/Linux or Cmd+C on Mac).,
  • Paste the code into your file in VS Code, and save the file with a meaningful name and the appropriate file extension for Python use (.py).file extension.
  • To run the code, open the file in VS Code and click the "Run" button in the top menu, or use the keyboard shortcut Ctrl+Alt+N (on Windows and Linux) or Cmd+Alt+N (on Mac). The output of your code will appear in the VS Code output console.

I hope you found this useful. Remember that Tkinter is an built-in library that comes along with python and doesn't require any installation.

I found this code snippet by searching for "canvas tkinter" in kandi. You can try any such use case!

Environment tested

I tested this solution in the following versions. Be mindful of changes when working with other versions.

  1. The solution is created and tested using Vscode 1.77.2 version
  2. This code was tested using Python version 3.8.0

By using this technique, you can make attractive startup screens for GUI apps in Python's Tkinter. This process also facilitates an easy-to-use, hassle-free method to create a hands-on working version of code. This helps to create canvas widgets using Tkinter in Python


1. What can you do with a canvas widget in Python Tkinter Canvas?   

With Python Tkinter canvas, you can make and change graphics such as lines, shapes, text, and images. You can use it as a surface to draw and create interactive graphics and games.   

2. How does the canvas coordinate system work?   

The canvas coordinate system in Tkinter works with (0,0) as the top-left corner of the canvas. The x and y coordinates increase as you move right and down. We use negative coordinates to represent positions outside the visible canvas area.   

3. Could you give an example of a simple sketchpad in Python with Tkinter Canvas?   

import tkinter as tk;   

canvas = tk.Canvas(width=400, height=300);   


This code imports Tkinter as `tk` and creates a canvas widget with a width of 400 pixels and a height of 300 pixels. It then packs it into the main window for display.  

4. Are there any limits when using rectangular items on a Python tkinter canvas?   

There are limitations when working with rectangle items on a Python Tkinter canvas. It includes limited support for complex transformations. It also includes limited event handling options compared to other shapes.   

5. How can one create polygon shapes on Python tkinter canvases?   

To create polygon shapes on a Python Tkinter canvas, use the `create_polygon()` method. Also, provide the coordinates of the vertices as arguments in the form of a list. For example: `canvas.create_polygon(x1, y1, x2, y2, x3, y3, ..., xn, yn)`  


  1. For any support on kandi solution kits, please use the chat
  2. For further learning resources, visit the Open Weaver Community learning page.

See similar Kits and Libraries