PythonでGUI作成 tkinterでcanvasウィジェットを使って画像を描画する方法

eyecatch
  • URLをコピーしました!

※本ページはアフィリエイト広告を利用しています

今回はPythonで作成したフォーム上に画像を描画する方法として、tkinterのcanvasウィジェットの使い方を解説していきたいと思います。

また、フォームの作成や他のウィジェットの使い方については以下の記事で解説していますので、あわせてご覧ください。

目次

tkinterとは

TkinterはGUI(グラフィカルユーザーインタフェース)を実装するためのPythonの標準ライブラリです。ボタンやテキストボックス、画像表示などユーザーがキーボードやマウスで操作可能なインタフェースを構築することができます。

公式ドキュメントは以下から参照できます。

著:クジラ飛行机
¥2,465 (2024/04/24 04:38時点 | Amazon調べ)

canvasで利用可能なオブジェクト

canvasとはtkinterで使用できるウィジェットの1つです。canvasを使用することで図を描画したり、画像を表示することが可能です。
canvasで利用可能なオブジェクト、メソッドは以下の通りです。

オブジェクトメソッド機能
arccreate_arc円弧を表示する。
bitmapcreate_bitmaptkinterで用意されている以下のビットマップを表示する。
error、gray12、gray25、gray50、gray75、hourglass、info、questhead、question、warning
imagecreate_image画像を表示する。
linecreate_line直線、または曲線を表示する。
ovalcreate_oval楕円を表示する。
polygoncreate_polygon多角形を表示する。
rectanglecreate_rectangle四角形を表示する。
textcreate_text文字列を表示する。
windowscreate_windowウィンドウを表示する。ウィンドウは1つのウィジェットを保持できる長方形の領域ですcanvs上で他のウィジェットを使用したい場合に使用します。
canvasのオブジェクト一覧
著:山田 祥寛
¥1,650 (2024/04/23 13:21時点 | Amazon調べ)

作成したソースコード

今回はサンプルとして四角形と楕円を表示するプログラムを作成しました。

コード解説

まずはベースとなる描画エリアを作成します。今回はわかりやすいように描画エリアを黒で表示するようにしました。

#フォーム上に描画エリアを作成
canvas = tk.Canvas(
    root,
    width=400,
    height=400,
    background="#000"
)
canvas.pack()

例として四角形を描画します。create_rectangleの引数は座標、色、tagとなっています。tagは複数のオブジェクトが重なった場合の表示順序などをを指定する際、各オブジェクトを識別するために使用します。

#四角形を描画する
canvas.create_rectangle(
    20, 20, 200, 200,
    fill="red",
    tag="rect_001"
)

全体のソースコード

import tkinter as tk

#ウィンドウを作成
root = tk.Tk()

#ウィンドウサイズを指定
root.geometry("640x480")

#ウィンドウタイトルを指定
root.title('canva test')

#フォーム上に描画エリアを作成
canvas = tk.Canvas(
    root,
    width=400,
    height=400,
    background="#000"
)
canvas.pack()

#四角形を描画する
canvas.create_rectangle(
    20, 20, 200, 200,
    fill="red",
    tag="rect_001"
)

#楕円を描画する
canvas.create_oval(
    200, 200, 350, 300,
    fill="yellow",
    tag="oval_001"
)

#ウィンドウ表示継続
root.mainloop()

実行結果

プログラムを実行すると以下のようなフォームが表示されました。
四角形、楕円とも指定した座標に描画されているのが確認できました。

プログラミングのスキルを活かすには

プログラミングのスキルを仕事に活かすには、フリーランスとして受けられる案件がおすすめです。

テックゲートフリーランスは、フリーランスエンジニアの案件紹介や契約交渉・債権管理などのサポートを行っているフリーランスエージェントです。

テックゲートフリーランスのココがおすすめ
  • リモートワーク可能な案件が50%以上
  • 週3〜4日の案件の豊富さ
  • 年収100万円アップのサポート

無料相談フォームからご登録いただくだけで、経験年数やスキルに合わせて案件をご紹介また、リモートワーク可能な案件や週3〜4日OKの案件も豊富に用意されています。

副業やフリーランスとして仕事を受けてみたいと考えている方には、テックゲートフリーランスが提供する多様なサポートが非常におすすめです。

無料で登録してみる!

まとめ

今回はtkinterのcanvasモジュールについて解説しました。フォーム上に図を描画したり画像を表示したしたいときにぜひ活用してみてください。

Tkinterを使ったGUI作成についてさらに詳しく学びたい方には、自分のペースで動画で学べるUdemyの以下の講座もおすすめです。

icon icon 0から始めるTkinterの使い方完全マスター講座〜Python×GUIの基礎・応用〜 icon

また、以下の記事で効率的にPythonのプログラミングスキルを学べるプログラミングスクールの選び方について解説しています。最近ではほとんどのスクールがオンラインで授業を受けられるようになり、仕事をしながらでも自宅で自分のペースで学習できるようになりました。

スキルアップや副業にぜひ活用してみてください。

スクールではなく、自分でPythonを習得したい方には、いつでもどこでも学べる動画学習プラットフォームのUdemyがおすすめです。

講座単位で購入できるため、スクールに比べ非常に安価(セール時1200円程度~)に学ぶことができます。私も受講しているおすすめの講座を以下の記事でまとめていますので、ぜひ参考にしてみてください。

それでは、また次の記事でお会いしましょう。

著:久我 涼子
¥2,260 (2023/09/18 22:17時点 | Amazon調べ)
著:クジラ飛行机
¥2,465 (2024/04/24 04:38時点 | Amazon調べ)

参考

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次