我创建了一个pyqt4
应用程序,我想这样做,因此只允许运行一个(QApplication)实例。
程序读取和写入音频文件,如果运行的实例超过1个,则Windows(Linux很好)会抛出2个程序试图访问相同文件的错误。我看到很多java和C应用程序会在程序运行时显示一个简单的对话框,我只想知道如何在pyqt4中执行此操作。
一点帮助?
答案 0 :(得分:2)
这种编程模式称为“单例”实例或“单例应用程序”。
通常使用全局互斥锁或在程序生命周期的早期锁定文件。 当您编程启动时,如果文件句柄已被锁定,则退出。
Qt Solutions在此处提供:http://doc.qt.digia.com/solutions/4/qtsingleapplication/qtsingleapplication.html
将这些全局互斥锁/锁定用于pyqt可能需要一些工作,因为pyqt在其中没有qt-solutions部分,但据我所知。
以下是使用跨平台python脚本的替代方法:
Python: single instance of program
希望有所帮助。
答案 1 :(得分:1)
感谢。我使用https://gitorious.org/qsingleapplication/qsingleapplication/source/ca13324b0f5bdfcaf4e379a78108f0bd85fed98a:qSingleApplication.py#L66并在我的主窗口上调用QSingleApplication并且工作正常