🐍
PythonのGUIウィンドウの多重起動を防止する(tkinter)
方法
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