Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.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/8/python-3.x/19.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
在PyQt5 python中创建拆分器句柄上的右键单击菜单_Python_Python 3.x_Pyqt5 - Fatal编程技术网

在PyQt5 python中创建拆分器句柄上的右键单击菜单

在PyQt5 python中创建拆分器句柄上的右键单击菜单,python,python-3.x,pyqt5,Python,Python 3.x,Pyqt5,我做了一个拆分器。我一直试图在右键单击拆分器句柄时显示右键单击菜单 下面是我创建的代码。目前,它无法识别拆分器手柄上的右击。(注意:如果在拆分器的第一帧即左上角帧中单击鼠标右键,则此代码当前更新计数) 这里的技巧是创建一个自定义qspliterHandle类并覆盖qspliterHandle.mousePressEvent和一个自定义qspliterHandle类,在其中覆盖createHandle,以便它返回自定义qspliterHandle,而不是标准的 class MySplitter(Q

我做了一个拆分器。我一直试图在右键单击拆分器句柄时显示右键单击菜单

下面是我创建的代码。目前,它无法识别拆分器手柄上的右击。(注意:如果在拆分器的第一帧即左上角帧中单击鼠标右键,则此代码当前更新计数)


这里的技巧是创建一个自定义
qspliterHandle
类并覆盖
qspliterHandle.mousePressEvent
和一个自定义
qspliterHandle
类,在其中覆盖
createHandle
,以便它返回自定义
qspliterHandle
,而不是标准的

class MySplitter(QSplitter):
    def createHandle(self):
        return MySplitterHandle(self.orientation(), self)


class MySplitterHandle(QSplitterHandle):
    def mousePressEvent(self, event):
        if event.button() == Qt.RightButton:
            print('Right mouse clicked')

        elif event.button() == Qt.LeftButton:
            print('Left mouse clicked')

        super().mousePressEvent(event)
最后,要使用自定义的
QSplitter
,您需要在
SplitterLayout
中用
MySplitter
替换所有出现的
QSplitter

class MySplitter(QSplitter):
    def createHandle(self):
        return MySplitterHandle(self.orientation(), self)


class MySplitterHandle(QSplitterHandle):
    def mousePressEvent(self, event):
        if event.button() == Qt.RightButton:
            print('Right mouse clicked')

        elif event.button() == Qt.LeftButton:
            print('Left mouse clicked')

        super().mousePressEvent(event)