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

Tkinterウィンドウの閉じるボタン([X])を無効にする方法

Tkinterのウィンドウコントロールアイコン(最小化・最大化・閉じるなど)は、ウィンドウマネージャによって実装されています。これらのコントロールアイコンの表示・非表示や動作の制御には、Tkinterに組み込まれた関数を利用できます。

特に、ウィンドウ右上の「×」ボタン(Exitアイコン)による終了操作を無効化したい場合は、protocol()メソッドを使用します。「WM_DELETE_WINDOW」プロトコルに対して空の関数(何もしない関数)を登録することで、閉じるボタンの動作を無効にできます。

サンプルコード

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

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

#ウィンドウサイズを設定
win.geometry("750x250")

#ウィンドウを閉じる関数
def close_win():
    win.destroy()

#何もしない関数(イベント無効化用)
def disable_event():
    pass

#ウィンドウを閉じるためのボタンを作成
btn = ttk.Button(win, text="クリックして閉じる", command=close_win)
btn.pack()

#閉じるボタン([X])を無効化
win.protocol("WM_DELETE_WINDOW", disable_event)

win.mainloop()

実行結果

上記のコードを実行すると、右上の「×」ボタンが無効化されたウィンドウが表示されます。ユーザーが「×」をクリックしても、ウィンドウは閉じません。

Tkinterウィンドウの閉じるボタン([X])を無効にする方法

ウィンドウを閉じるには、画面内の「クリックして閉じる」ボタンを押してください。このボタンにはclose_win()関数が割り当てられており、destroy()メソッドによってウィンドウが正常に破棄されます。

ポイント解説

  • protocol("WM_DELETE_WINDOW", 関数): ウィンドウマネージャから削除要求を受け取った際に呼び出される関数を登録します。
  • disable_event(): pass文のみの空関数です。×ボタンが押されても何も処理されないため、誤ってウィンドウが閉じることを防げます。
  • close_win(): ボタン経由であればdestroy()を呼び出せるため、アプリケーション側の任意のタイミングでウィンドウを閉じることが可能です。

この手法は、入力途中のデータ保護や確認ダイアログの表示など、「ユーザーの意図しない終了を防ぎたい」場面で非常に役立ちます。

  1. Python Tkinterで透明なウィンドウを作成する方法

    Pythonは、デスクトップアプリケーションをはじめとする実用的なアプリ開発で最も人気のあるプログラミング言語の一つです。豊富なライブラリと多様なモジュール・関数が用意されており、拡張性の高いアプリケーションを効率的に構築できます。その中でもTkinterは、GUIベースのアプリケーションを作成する際に最も広く使われている標準ライブラリです。ウィジェットの追加をはじめ、ウィンドウに必要なさまざまな属性を簡単に設定できるのが特徴です。透明なウィンドウを作るにはここでは、Tkinterを使って半透明のウィンドウを作成する方法を紹介します。ウィンドウの透明度を変更するには、attributes()メ

  2. Python Tkinterでフレームレス(枠なし)ウィンドウを作成する方法

    Tkinterは、PythonでGUIアプリケーションを開発する際に最も広く使われている標準ライブラリです。ボタンやラベルなどのウィジェット追加をはじめ、GUI構築に必要なさまざまな機能が標準で備わっています。 ここでは、Tkinterを使ってタイトルバーや境界線のない「フレームレス(ボーダーレス)ウィンドウ」を作成する方法を解説します。フレームレスウィンドウを実現するには、overrideredirectメソッドを使用します。このメソッドを有効にすると、OSのウィンドウマネージャーによる装飾が無効化され、閉じるボタン、タイトルバー、最小化ボタンといったウィンドウ要素がすべて取り除かれます。