用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 ……
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥100 任意维数的K均值聚类
- ¥15 stamps做sbas-insar,时序沉降图怎么画
- ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
- ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
- ¥15 关于#Java#的问题,如何解决?
- ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
- ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
- ¥15 cmd cl 0x000007b
- ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
- ¥500 火焰左右视图、视差(基于双目相机)