在下面給出的最小示例中,上下文菜單(右鍵單擊gui的白色部分)只會短暫顯示,然後消失。如果應用程序是從IPython(0.13.1)控制檯啓動的,則是這種情況。當從shell正常啓動時,它應該可以正常工作。如果PySide應用程序正在從IPython交互式控制檯運行,上下文菜單消失
import sys
from PySide import QtGui, QtCore
from IPython.lib.guisupport import get_app_qt4, start_event_loop_qt4
class ContextTestGui(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.ui = Ui_ContextTestWindow()
self.ui.setupUi(self)
self.ui.treeView.addAction(self.ui.actionCopy)
self.ui.treeView.addAction(self.ui.actionShow)
class Ui_ContextTestWindow(object):
def setupUi(self, ContextTestWindow):
ContextTestWindow.resize(200, 100)
self.treeView = QtGui.QTreeView(ContextTestWindow)
self.treeView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
self.treeView.setMinimumSize(QtCore.QSize(100, 100))
self.actionCopy = QtGui.QAction("Copy",ContextTestWindow)
self.actionShow = QtGui.QAction("Show",ContextTestWindow)
def create_window(window_class,**kwargs):
app = get_app_qt4(sys.argv)
window = window_class()
window.show()
start_event_loop_qt4(app)
return window
if __name__ == '__main__':
simgui = create_window(ContextTestGui)
我相信這是問題[#2380](https://github.com/ipython/ipython/issues/2380),其目的是在當前的git master中修復。你可以檢查一下嗎? – minrk 2013-02-10 06:36:42
是的,雖然問題中提到的那些有問題的對話框(保存,打開)按預期工作,但只有上下文菜單有缺陷。當應用問題#2380中引用的提交[66c77ff392](https://github.com/ipython/ipython/commit/66c77ff392ad7425f8443e1343f5bf8c84a7b5d7)中的差異時,即應用程序被替換爲事件循環時,問題就消失了。現在我不知道要在我的應用程序中做什麼,除了等待0.14? – Bula 2013-02-10 15:10:04
根據您的部署情況,您可以將修補程序直接應用到您的IPython,或者在加載時讓您的應用程序monkeypatch IPython。你需要重寫的是'IPython.lib.inputhook.enable_qt4',它的版本指向你自己的執行正確操作的函數(也可以從IPython master)。 – minrk 2013-02-10 22:05:43