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

时间:2015-03-11 00:22:49

标签: python qt python-3.x qt4 instance

我创建了一个pyqt4应用程序,我想这样做,因此只允许运行一个(QApplication)实例。

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

一点帮助?

2 个答案:

答案 0 :(得分:2)

这种编程模式称为“单例”实例或“单例应用程序”。

通常使用全局互斥锁或在程序生命周期的早期锁定文件。 当您编程启动时,如果文件句柄已被锁定,则退出。

Qt Solutions在此处提供:http://doc.qt.digia.com/solutions/4/qtsingleapplication/qtsingleapplication.html

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

将这些全局互斥锁/锁定用于pyqt可能需要一些工作,因为pyqt在其中没有qt-solutions部分,但据我所知。

以下是使用跨平台python脚本的替代方法:

Python: single instance of program

希望有所帮助。

答案 1 :(得分:1)