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

Tkinterでウィジェットを表示・非表示に切り替える方法

GUIアプリケーションを開発していると、状況に応じてウィジェットを表示したり非表示にしたりしたい場面が出てきます。Tkinterでは、この操作を非常に簡単に実装できます。

  • ウィジェットを非表示にするには、pack_forget() メソッドを使用します。
  • 非表示にしたウィジェットを再び表示するには、pack() メソッドを使用します。

どちらのメソッドも、lambda式(無名関数)を使ってボタンのcommand引数に渡すことで、手軽に呼び出すことができます。

サンプルコード

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

# tkinterフレームのインスタンスを作成
win = Tk()

# ウィンドウのサイズを設定
win.geometry("650x450")

# ウィジェットを非表示にする関数
def hide_widget(widget):
    widget.pack_forget()

# ウィジェットを表示する関数
def show_widget(widget):
    widget.pack()

# ラベルウィジェットを作成
label = Label(win, text="Showing the Message", font=('Helvetica bold', 14))
label.pack(pady=20)

# 「Hide」ボタンを作成
button_hide = Button(win, text="Hide", command=lambda: hide_widget(label))
button_hide.pack(pady=20)

# 「Show」ボタンを作成
button_show = Button(win, text="Show", command=lambda: show_widget(label))
button_show.pack()

win.mainloop()

実行結果

上記のコードを実行すると、「Show」と「Hide」の2つのボタンが配置されたウィンドウが表示されます。これらのボタンをクリックすることで、ラベルウィジェットの表示と非表示を自由に切り替えることができます。

Tkinterでウィジェットを表示・非表示に切り替える方法

「Hide」ボタンをクリックするとラベルのテキストが画面から消え、「Show」ボタンをクリックすると再び表示されます。

Tkinterでウィジェットを表示・非表示に切り替える方法

ポイント解説

pack_forget()はジオメトリマネージャーからウィジェットの登録を解除するだけで、ウィジェット自体は破棄されません。そのため、後からpack()を呼び出せば同じウィジェットを再表示できます。ただし、pack_forget()を使用した場合、元の配置情報(sideやanchorなど)は保持されないため、再表示時のレイアウトが必要な場合はgrid_remove()の方が適しています。grid_remove()は削除前のグリッド設定を記憶しているためです。

  1. Tkinterでウィジェットの現在のX・Y座標を取得する方法

    Tkinterは、PythonでGUIアプリケーションを開発するために広く利用されている標準ライブラリです。ボタン、テキストボックス、ラベルなど、さまざまなウィジェットが用意されており、これらを組み合わせることで直感的なユーザーインターフェースを構築できます。さらに、ウィジェットの配置位置や座標も、専用の関数やライブラリを使って柔軟にカスタマイズすることが可能です。ここでは、Tkinterフレーム上に配置したウィジェットの実際の座標を取得する方法を紹介します。ウィジェットの正確な座標を知りたい場合には、Tkinterライブラリが提供するgeometry(ジオメトリ)関連のメソッドを活用します。

  2. Python Tkinterでプログレスバーを作成する方法をわかりやすく解説

    プログレスバーとはプログレスバーは、処理やタスクの進行状況を視覚的に表示するための、GUIアプリケーションにおける一般的な要素です。ファイルのダウンロードやデータ処理など、時間のかかる作業の進み具合をユーザーに伝えることで、アプリケーションの使いやすさを大きく向上させます。tkinterでプログレスバーを作成するこの記事では、Python標準のGUIライブラリ「tkinter」を使ってプログレスバーを作成する方法を解説します。以下のサンプルプログラムでは、tkinter.ttkモジュールからProgressbarウィジェットをインポートして使用しています。また、ttk.Styleクラスのオブジ