Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么PySide在文件对话框后退出?_Python_Macos_Qt_Pyside - Fatal编程技术网

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

Python 为什么PySide在文件对话框后退出?,python,macos,qt,pyside,Python,Macos,Qt,Pyside,我正在编写一个简单的托盘图标应用程序。 但在将文件对话框添加到菜单操作后,整个应用程序将退出 如果我在我的Mac电脑上运行代码,它会打印文件名,因此不会完全崩溃。 如果我用字符串替换对getOpenFileName的调用,它将继续运行 import sys from PySide import QtCore, QtGui def share(): (filename, _) = QtGui.QFileDialog.getOpenFileName() print(filename

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

如果我在我的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应用程序在最后一个窗口关闭时隐式退出。要防止这种情况,可以在
qgui应用程序
中使用
setQuitOnLastWindowClosed

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