微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 python pyqt5

如何解决使用 python pyqt5

我正在使用 PyQt5我有一个窗口应用程序,我已经有了一些函数和类,并且我实现了当用户单击鼠标右键单击时它会显示一个上下文菜单

我需要的是:我想对代码进行单元测试,所以我想测试右键单击这将打开上下文菜单,然后我必须测试用户是否单击它,它应该执行某些操作就像删除点一样。

但我的问题是我无法创建一个事件来点击该上下文菜单并采取行动,因为我认为它不在小部件中,所以我无法点击事件上下文菜单在,我试过了,但没有用。

所以有什么想法,如何让事件点击或传递或任何只是在上下文菜单打开后采取行动并运行代码

注意:我使用 QEvent 进行测试,因为我使用 QWidget 和 QAplication PyQt5 python 3.7。

这是打开上下文菜单的测试事件:

    point = QPointF(30,30) #For example this will open the context menu at that point
    e = QMouseEvent(QMouseEvent.MouseButtonPress,point,Qt.RightButton,Qt.NoButton,Qt.NoModifier)  #Right Click
    self.canvas.contextMenuEvent(e)

这是来自画布类:

    def contextMenuEvent(self,ev):
    """
    overrides the original contextMenuEvent function
    :param ev: <QEvent>
    :return: None
    """
    self.current_tool.context_menu(ev)

这是来自当前工具函数

    def context_menu(self,e):
    menu = QMenu(self.canvas)
    delete_whole_polygon_act = menu.addAction("Delete Area?")
    action = menu.exec_(self.canvas.mapToGlobal(e.pos()))
    if action == delete_whole_polygon_act: 
        self.delete_polygon(e.pos())

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。