【问题标题】:How is the function launched without a function call?在没有函数调用的情况下如何启动函数?
【发布时间】:2018-09-27 12:57:25
【问题描述】:

有人可以向我解释一下程序是如何知道如果我单击鼠标右键它必须启动 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 中。你看过那里吗?
  • 我不知道怎么做。 QtWidgets 文件具有 .pyd 格式。

标签: python python-3.x class pyqt5


【解决方案1】:

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

在您的课程中,您将覆盖此方法,以便调用您的方法而不是来自QMainWindow 的方法。

另见

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多