Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.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 如何在没有函数调用的情况下启动函数?_Python_Python 3.x_Class_Pyqt5 - Fatal编程技术网

Python 如何在没有函数调用的情况下启动函数?

Python 如何在没有函数调用的情况下启动函数?,python,python-3.x,class,pyqt5,Python,Python 3.x,Class,Pyqt5,有人能给我解释一下程序是如何知道如果我点击鼠标右键,它必须启动contextMenuEvent的?这个电话是在哪里打的?如果是父类执行此操作,它如何知道函数的名称 import sys from PyQt5.QtWidgets import QMainWindow, qApp, QMenu, QApplication class Example(QMainWindow): def __init__(self): super().__init__()

有人能给我解释一下程序是如何知道如果我点击鼠标右键,它必须启动contextMenuEvent的?这个电话是在哪里打的?如果是父类执行此操作,它如何知道函数的名称

import sys
from PyQt5.QtWidgets import QMainWindow, qApp, QMenu, QApplication

class Example(QMainWindow):

    def __init__(self):
        super().__init__()

        self.initUI()


    def initUI(self):         

        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('Context menu')    
        self.show()


    def contextMenuEvent(self, event):

           cmenu = QMenu(self)

           newAct = cmenu.addAction("New")
           opnAct = cmenu.addAction("Open")
           quitAct = cmenu.addAction("Quit")
           action = cmenu.exec_(self.mapToGlobal(event.pos()))

           if action == quitAct:
               qApp.quit()

if __name__ == '__main__': 
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

QMainWindow
已经提供了由Qt框架调用的
contextMenuEvent
方法

在您的类中,您正在重写此方法,以便调用您的方法,而不是
QMainWindow
中的方法

另见


我认为魔法就在我的窗户里。你看了吗?我不知道怎么看。QtWidgets文件的格式为.pyd。