右键菜单代码将无法运行

时间:2015-01-19 14:27:35

标签: python-2.7 contextmenu pyside qtreeview

我尝试创建一个单击鼠标右键时出现的菜单,我已经按照了一些教程,但是当我将它们放入我的代码中并进行更改时,他们就赢了。工作。

这是我的代码:

def First(self):
    FirstFrame = QtGui.QFrame()
    FirstFrame.setFixedSize(230,660)
# LIST VIEW FOLDER
    self.folders_lv = QtGui.QTreeView()
    self.folders_lv.

# DEFINE THE FUNCTION FOR FIRST FRAME
    Firstbox = QtGui.QGridLayout()
    Firstbox.addWidget(self.folders_lv,3,0,1,4)
    Firstbox.setColumnStretch(1, 1)
    FirstFrame.setLayout(Firstbox)

    self.folders_lv.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
    self.customContextMenuRequested.connect(self.showMenu())

    return FirstFrame


def showMenu(self, pos):
    menu= QtGui.QMenu(self)
    menu.addAction(QtGui.QAction("Item 1", menu))
    menu.addAction(QtGui.QAction("Item 2", menu))
    menu.addAction(QtGui.QAction("Item 3", menu))
    menu.popup(self.mapToGlobal(pos))

1 个答案:

答案 0 :(得分:1)

连接信号时需要传递函数 object ,所以摆脱括号:

   self.folders_lv.customContextMenuRequested.connect(self.showMenu)

此外,在showMenu广告位中,您可能需要:

   menu.popup(self.folders_lv.viewport().mapToGlobal(pos))