🐍

PythonのGUIウィンドウの多重起動を防止する(tkinter)

2023/07/24に公開

方法

win32guiのFindWindowを利用し、指定した名前のウィンドウが既に存在したらGUIを立ち上げる前にプログラムを終了させます

win32guiはPythonからWindowsAPIを利用可能とするpywin32というライブラリの一部です。

環境

・Windows10 64bit
・Python 3.7.5
・tkinter 8.6.9
・pywin32 306

コード

import win32gui
from tkinter import *


# ウィンドウ名を定義
WindowName = "FoundMe"

# 定義したウィンドウ名と完全一致するウィンドウを取得してみる
# なかった場合は0(int)、あった場合はウィンドウハンドル(int)が返ってくる
WindowHandle = win32gui.FindWindow(None, WindowName)

# もし既にウィンドウがあったら終了する
if 0 != WindowHandle:
    exit()

# GUI生成
Root = Tk()
Root.title(WindowName)  # ウィンドウ名を設定
Root.mainloop()         # GUI生成

Discussion