代码之家  ›  专栏  ›  技术社区  ›  Igor Dragushhak

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

  •  3
  • Igor Dragushhak  · 技术社区  · 7 年前

    有人能解释一下程序是如何知道如果我点击鼠标右键它必须启动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_())
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   Andreas Fester    7 年前

    QMainWindow contextMenuEvent

    在你们班上,你们是 覆盖 此方法,以便调用您的方法,而不是 Q主窗口 .