只允许 pyqt4 应用程序的一个实例

Only allowing one instance of a pyqt4 application

我已经创建了一个 pyqt4 应用程序,并且我想将其创建为只允许一个实例(QApplication 的)运行。

程序读写音频文件,如果超过1个实例是运行ning,Windows(linux可以)抛出2个程序试图访问的错误相同的文件。我看到很多 java 和 C 应用程序如果程序已经 运行ning 就会显示一个简单的对话框,我只是想知道如何在 pyqt4 中执行此操作。

有点帮助?​​

这种编程模式称为 "singleton" 实例或 "singleton application"。

通常它是通过全局互斥或通过在程序生命周期的早期锁定文件来完成的。 当你程序启动时,如果文件句柄已经被锁定,那么你就退出。

Qt 解决方案在这里:http://doc.qt.digia.com/solutions/4/qtsingleapplication/qtsingleapplication.html

https://qt.gitorious.org/qt-solutions/qt-solutions/source/841982ceec9d30a7ab7324979a0fd5c9c36fd121:qtsingleapplication

要让这些全局 mutexes/locks 在 pyqt 中工作可能需要一些工作,因为据我所知,pyqt 中还没有 qt-solutions 部分。

这是一个使用跨平台 python 脚本的替代方案:

Python: single instance of program

希望对您有所帮助。

谢谢。我使用 https://gitorious.org/qsingleapplication/qsingleapplication/source/ca13324b0f5bdfcaf4e379a78108f0bd85fed98a:qSingleApplication.py#L66 并在我的 MainWindow 上调用了 QSingleApplication 并且工作正常