Tkinterでタイトルバーのないサイズ変更可能なウィンドウを作成する方法
Tkinterでタイトルバーのないウィンドウを作成するには、overrideredirect(boolean) プロパティを使用します。このプロパティを有効にすると、ウィンドウ上部のナビゲーションバー(タイトルバー)が非表示になります。ただし、この方法だけではユーザーがウィンドウを自由にサイズ変更することはできません。
タイトルバーを持たず、かつプログラム的にリサイズ可能なウィンドウを作成したい場合は、Tkinterの Sizegrip(parent) ウィジェットを活用します。Sizegrip ウィジェットを追加すると、ユーザーがグリップをつかんでドラッグすることでメインウィンドウのサイズを変更できるようになります。Sizegripを使用する際は、マウスボタンの操作と、グリップが引っ張られたときにウィンドウをリサイズする関数をバインド(紐付け)する必要があります。
サンプルコード
# 必要なライブラリをインポート
from tkinter import *
from tkinter import ttk
# tkinterフレーム(ウィンドウ)のインスタンスを作成
win=Tk()
# ウィンドウのサイズを設定
win.geometry("700x350")
# ウィンドウのタイトルバーを非表示にする
win.overrideredirect(True)
# ウィンドウをリサイズするための関数を定義
def moveMouseButton(e):
x1=winfo_pointerx()
y1=winfo_pointery()
x0=winfo_rootx()
y0=winfo_rooty()
win.geometry("%s x %s" % ((x1-x0),(y1-y0)))
# Labelウィジェットを追加
label=Label(win,text="右下の角をつかんでウィンドウをリサイズしてください")
label.pack(side="top", fill="both", expand=True)
# リサイズ用のグリップを追加
grip=ttk.Sizegrip()
grip.place(relx=1.0, rely=1.0, anchor="se")
grip.lift(label)
grip.bind("", moveMouseButton)
win.mainloop() コードの解説
overrideredirect(True) の役割
win.overrideredirect(True) を呼び出すことで、ウィンドウマネージャーによる装飾(タイトルバーや境界線)が解除され、枠のないシンプルなウィンドウが表示されます。
moveMouseButton 関数について
この関数では、winfo_pointerx() と winfo_pointery() で現在のマウスカーソル位置を取得し、winfo_rootx() と winfo_rooty() でウィンドウ左上の座標を取得します。両者の差分から新しい幅と高さを算出し、geometry() メソッドでウィンドウサイズを更新しています。
Sizegrip の配置とイベントバインド
grip.place(relx=1.0, rely=1.0, anchor="se") により、グリップをウィンドウの右下隅に配置します。さらに bind(" で、マウスの左ボタンを押しながら移動した際にリサイズ処理が実行されるように設定しています。
実行結果
上記のコードを実行すると、タイトルバーのないウィンドウが表示されます。ウィンドウ右下のグリップをドラッグすることで、自由にサイズを変更できます。

-
ウィンドウを表示せずにtkinterでクリップボードの内容を取得する方法
アプリケーション開発において、クリップボードに格納されている内容を取得したいケースはよくあります。PythonのGUIライブラリ「tkinter」では、clipboard_get()メソッドを使うことで、クリップボード内のテキストデータに簡単にアクセスできます。クリップボードからデータを取得する仕組みclipboard_get()でクリップボードからテキストを取得すると、そのデータはキャッシュメモリ上に保持されます。これにより、プログラムのデバッグや、取得したテキストをフレーム(ウィジェット)上に表示して確認することが可能になります。基本的な流れは以下のとおりです。Tkインスタンスを作成し、ウ
-
tkinterでウィンドウを閉じる方法|destroy()メソッドの使い方を解説
tkinterを使えば、Pythonで手軽にGUIアプリケーションを作成できます。しかし、タイトルバー右上の×ボタン以外の方法でウィンドウやフレームを閉じたい場合、どのように実装すればよいか悩むこともあるでしょう。そのようなときに役立つのが、ウィンドウを破棄して閉じるための .destroy() メソッドです。tkinterの各ウィジェットや属性は互いに独立しているため、「ウィンドウを閉じる処理」を専用の関数として分離して定義できます。これにより、ボタンのクリックイベントからウィンドウを閉じる動作を自由に制御可能です。サンプルコード# ライブラリをインポート from tkinter impo