Python
 Computer >> コンピューター >  >> プログラミング >> Python

Tkinterで複数のキャンバスを同時に表示する方法


TkinterのCanvas(キャンバス)ウィジェットは、もっとも汎用性の高いウィジェットのひとつです。図形や円弧(アーク)、画像の描画はもちろん、アプリケーション内でのイラスト作成や複雑なレイアウトの構築など、幅広い用途に活用できます。

Canvasウィジェットを生成するには、canvas(root, **options) という形式でコンストラクタを呼び出します。さらに、create_text や create_image、create_arc といったファクトリ関数を使えば、キャンバス上にテキスト・画像・円弧などを自由に描き込むことも可能です。

アプリケーション全体のワークフローに一貫性を持たせたい場合など、同じキャンバスをもとにもうひとつのキャンバスを作成したいケースがあります。そのようなときは、ボタンをクリックしたタイミングでイベントを発生させ、そのイベントハンドラの中で新しいキャンバスを生成するのが効果的です。

それでは実際に、メインのキャンバスと「新しいウィンドウを開く」ためのボタンを作成し、ボタンの操作によって別のキャンバスを表示して、元のキャンバスを更新する例を見てみましょう。

サンプルコード

# 必要なライブラリをインポート
from tkinter import *
from tkinter import ttk

# tkinterウィンドウのインスタンスを作成
win = Tk()
win.geometry("700x350")

# Styleクラスのインスタンスを作成
style = ttk.Style(win)

def open_new_win():
    # 新しいトップレベルウィンドウを生成
    top = Toplevel(win)
    # メインキャンバス上に新しいキャンバスを作成
    canvas1 = Canvas(canvas, height=180, width=100, bg="#aaaffe")
    canvas1.pack()
    Label(canvas1, text="You can modify this text", font='Helvetica 18 bold').pack()

# キャンバスウィジェットを作成
canvas = Canvas(win, height=400, width=300)
canvas.pack()

# ボタンウィジェットを作成
button = ttk.Button(canvas, text="Open Window", command=open_new_win)
button.pack(pady=30)

win.mainloop()

実行結果

このコードを実行すると、「Open Window」というボタンが配置されたキャンバスを持つウィンドウが表示されます。

Tkinterで複数のキャンバスを同時に表示する方法

ボタンをクリックすると、新しいウィンドウ(Toplevel)が開くとともに、メインのキャンバスウィンドウ上に「You can modify this text」というテキストを含む新しいキャンバスが追加されて表示されます。

Tkinterで複数のキャンバスを同時に表示する方法

コードのポイント

  • Toplevel(win):メインウィンドウとは別の独立したウィンドウを生成します。サブウィンドウやダイアログを作成したい場合に利用します。
  • command=open_new_win:ボタンがクリックされたときに呼び出される関数を指定します。ここでは新しいキャンバスを生成する処理を登録しています。
  • Canvas(canvas, ...):第1引数に親ウィジェットを指定することで、既存のキャンバス上に新しいキャンバスを配置できます。

  1. 複数のGmailアカウントを同時に使用する3つの方法を徹底解説

    学校や仕事の用途、あるいはメインのメールアドレスが少し恥ずかしいものであるといった理由で、ほとんどの人が人生のどこかのタイミングで複数のメールアカウントを持つことになります。追加のメールアカウントも、メインのアドレスと同じように確認・管理・活用していく必要があります。2つのアカウントが異なるメールサービスであれば特に問題はありませんが、両方ともGmailのように同じプロバイダーに登録されている場合はどうすればよいのでしょうか?他のメールサービスであれば、同時に使えるのは1つのアカウントだけと諦めるしかありません。しかし幸いなことに、Gmailには複数のアカウントを同時に利用する方法がいくつか用

  2. Windows 10のタスクバーに複数の時計を表示する3つの方法

    世界にはさまざまなタイムゾーンが存在し、アメリカだけでも太平洋・山岳部・中部・東部の4つの時間帯に分かれています。それぞれの時差を覚えて、別の地域の現在時刻を瞬時に計算するのは簡単ではありません。この課題を解決するため、MicrosoftはWindows 10のタスクバーに複数の時計を表示して異なる地域の時刻を確認できるよう、実に3つの方法を用意しています。筆者がこの機能を知る前は、Google検索で現在時刻を調べていました。しかし、タスクバーに追加の時計を設定しておけば、PCがインターネットに接続されていなくても時刻を確認できます。 Windows 10のこの機能が役立つシーンの例を挙げて