python - 为什么 PySide 在文件对话框后退出?

标签 python macos qt pyside

我正在编写一个简单的托盘图标应用程序。 但是在将文件对话框添加到菜单操作后,整个应用程序将退出。

如果我在 Mac 上运行代码,它会打印文件名,因此不会彻底崩溃。 如果我用字符串替换对 getOpenFileName 的调用,它会继续运行。

import sys
from PySide import QtCore, QtGui

def share():
    (filename, _) = QtGui.QFileDialog.getOpenFileName()
    print(filename)

app = QtGui.QApplication(sys.argv)

icon = QtGui.QSystemTrayIcon(QtGui.QIcon('images/glyphicons-206-electricity.png'), app)

menu = QtGui.QMenu()
menu.addAction(QtGui.QAction("Share...", menu, triggered=share))
menu.addAction(QtGui.QAction("Quit", menu, triggered=app.quit))


icon.setContextMenu(menu)
icon.show()

app.exec_()

我使用的是 Mac OS X 10.10.1、Python 3.4.2、Qt 4.8.6 和 PySide 1.2.2

最佳答案

默认情况下,当最后一个窗口关闭时,Qt 应用程序会隐式退出。为了防止这种情况,您可以在QGuiApplication中使用setQuitOnLastWindowClosed

app = QtGui.QApplication(sys.argv)
app.setQuitOnLastWindowClosed(false)

关于python - 为什么 PySide 在文件对话框后退出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27925736/

相关文章:

PyInstaller 生成的可执行文件中的 Python SSL 导入错误

objective-c - 获取系统根目录的NSURL

C++ QT 桌面工具栏

python - 在不使用 for 循环的情况下从 Python 中的元组中删除特定字符?

python : fill cuboid with spheres

python - 如何将 PIL 与 Tkinter 一起使用?

python - 通过Applescript在Python中打开pwdir文件夹中的文件

python - OSX Pillow 不兼容的库版本 libtiff.5.dylib 和 libjpeg.8.dylib

c++ - QML:自定义 QObject 类型错误

c++ - 使用Qt线程的困惑