我已经创建了一个pyqt4应用程序,我想让它运行,所以只允许运行一个实例( QApplication)。
程序读取和写入音频文件,如果运行的实例超过一个,Windows (linux很好)抛出两个程序试图访问相同文件的错误。我看到了很多java和C应用程序,如果程序已经在运行,它们将显示一个简单的对话框,我只想知道如何在pyqt4中这样做。
帮个忙?
发布于 2015-03-11 04:23:05
这种编程模式被称为“单例”实例或“单例应用程序”。
通常,它是通过全局互斥或在程序生命早期锁定文件来完成的。当程序启动时,如果文件句柄已经锁定,则退出。
Qt解决方案在这里有:http://doc.qt.digia.com/solutions/4/qtsingleapplication/qtsingleapplication.html
要让这些全局互斥/锁在pyqt中工作,可能需要做一些工作,因为据我所知,pyqt中还没有qt解决方案。
下面是一个使用跨平台python脚本的替代方案:
Python: single instance of program
希望这能有所帮助。
发布于 2015-03-11 15:55:03
谢谢。我使用了https://gitorious.org/qsingleapplication/qsingleapplication/source/ca13324b0f5bdfcaf4e379a78108f0bd85fed98a:qSingleApplication.py#L66,在我的MainWindow上调用了QSingleApplication,工作很好
https://stackoverflow.com/questions/28976484
复制相似问题