用python的tkinter做了个带UI的小程序,也打包成EXE了,运行没问题,但是发现双击已经运行后,仍然还可以再次双击再打开一个,如何限制只能运行一个?如果程序已经运行,则激活已经存在的程序窗口?有没有简单可靠的方法,谢谢
1条回答 默认 最新
- 神仙别闹 2021-10-13 00:41关注
可以用一个文件存放改程序pid号,启动时去该文件读取pid号,判断程序是否在执行
def close_window(window): """关闭友好提示""" if QMessageBox().information(None, "标题", "不能重复开启", QMessageBox.Ok) == QMessageBox.Ok: window.close() if __name__ == '__main__': cf = configparser.ConfigParser() status_path = os.path.join(os.getcwd(), 'config', 'status.conf') # 判断是否有开启权限,限制多开 tool_pid = conf_get(cf, status_path, 'tool_pid', 'pid') permission = True pids = psutil.pids() # tool_pid 不为空 if bool(tool_pid) is True: for pid in pids: p = psutil.Process(pid) if str(pid) == tool_pid and (p.name() == 'AutoTool.exe' or 'autotool.exe'): permission = False # 弹框提示 app = QApplication(sys.argv) demo = Demo() close_window(demo) else: continue if permission: # 修改pid for pid in pids: p = psutil.Process(pid) if p.name() == 'AutoTool.exe' or 'autotool.exe': conf_set(cf, status_path, 'tool_pid', 'pid', str(pid)) break ……
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 用hfss做微带贴片阵列天线的时候分析设置有问题
- ¥50 我撰写的python爬虫爬不了 要爬的网址有反爬机制
- ¥15 Centos / PETSc / PETGEM
- ¥15 centos7.9 IPv6端口telnet和端口监控问题
- ¥120 计算机网络的新校区组网设计
- ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
- ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
- ¥20 海浪数据 南海地区海况数据,波浪数据
- ¥20 软件测试决策法疑问求解答
- ¥15 win11 23H2删除推荐的项目,支持注册表等