【问题标题】:Python prevent multiple-instances / tkinter instancePython 防止多实例/tkinter 实例
【发布时间】:2022-01-03 09:57:13
【问题描述】:

Python 3.10(操作系统 Windows 10,64 位)

嗨,

我编译了我的 Python tkinter 代码。什么时候 我运行 *.exe 两次有两个 tkinter main 窗户(和我一样 运行 windows notepad.exe 两次)。

但我想防止 tkinter .exe 可以 开始了两次。我可以做点什么让 tkinter 无论如何只能启动一次 我是否点击 tkinter.exe windows桌面十几次。

【问题讨论】:

  • 您的代码在main() 函数中吗?你关心跨平台兼容性吗?
  • 我的意思是至少有一个文件,当程序启动时它会检查该文件,如果没有,它会启动并向文件写入一些东西,如果有的话(文本如果什么都没有,那将被写入),然后它不会启动,它会立即退出,当你关闭窗口(协议'WM_DELETE_WINDOW')时,它会清除该文件
  • @Thingamabobs 它只需要在 Windows 中工作(而不是在其他平台上)
  • @SamuelKazeem 谢谢,您的答案适用于 windows10: import win32event import win32api import sys from winerror import ERROR_ALREADY_EXISTS mutex = win32event.CreateMutex(None, False, 'name') last_error = win32api.GetLastError() if last_error == ERROR_ALREADY_EXISTS: sys.exit(0)

标签: python tkinter instance multiple-instances


【解决方案1】:

@SamuelKazeem -谢谢。您的答案适用于 Windows10:

import win32event
import win32api
import sys
from winerror import ERROR_ALREADY_EXISTS
mutex = win32event.CreateMutex(None, False, 'name')
last_error = win32api.GetLastError()
if last_error == ERROR_ALREADY_EXISTS:
   sys.exit(0)

import tkinter as tk
win=tk.Tk()
txt2=tk.Text(win, height=12, width=50)
win.title('python')
txt2.pack()
win.mainloop()

【讨论】:

    猜你喜欢
    • 2011-01-11
    • 1970-01-01
    • 2016-11-29
    • 2015-04-22
    • 1970-01-01
    • 1970-01-01
    • 2019-02-02
    • 2013-02-07
    • 2011-12-20
    相关资源
    最近更新 更多