如何使用 mousepressEvent 打开一个新的小部件

Posted

技术标签:

【中文标题】如何使用 mousepressEvent 打开一个新的小部件【英文标题】:how to open a new widget by using mousepressEvent 【发布时间】:2018-10-05 12:42:33 【问题描述】:

在这里,当我单击要打开新小部件的任何位置时,我使用鼠标按下事件来跟踪 x、y 位置?在该小部件中我想创建一个 3d 绘图,您能帮我解决这个问题吗 下面是我的代码:

 def mousePressEvent(self, evnt):
            print evnt
            print dir(evnt)
            print evnt.screenPos().x()
            print evnt.screenPos().y()


            self.ix = int(evnt.screenPos().x()/Setting.WIDTH)
            self.iy = int(evnt.screenPos().y()/Setting.HEIGHT)
            print self.ix , self.iy
            #self.widget = QtGui.QWidget()
            #self.widget.show()


import scipy as np
from mayavi import mlab


x,y = np.mgrid[-3:3:100j, -3:3:100j]

a = 0.3

a0 = 0.2

r1=np.sqrt((x-a)**2 + y**2)

values = np.sinc(-r1/a0)



mlab.surf(values, warp_scale='auto')

mlab.outline()

mlab.axes()
# mlab.test_contour3d()
mlab.show()

【问题讨论】:

你的代码有什么问题?请提供minimal reproducible example 当我单击 x,y 的任何位置时,它将在该小部件中打开一个新小部件,我想创建一个 3d 绘图,在这里我不知道如何与 mousepressEvent 互连到该 3d 中的小部件情节 你只是想让Mayavi窗口打开吗?x的坐标和PyQt的widget跟mayavi生成的窗口有什么关系?,我不懂你,自己解释. 我只是不明白你的问题是什么,我看到一个打开窗口的注释代码,你的问题是什么? 当我使用mousepressevent点击x,y的任意位置时,我想打开一个mayavi窗口 【参考方案1】:
import sys

from PyQt4.QtGui import QWidget, QApplication

class MyWidget(QWidget):
    def mousePressEvent(self, evnt):
        print evnt
        print dir(evnt)
        print evnt.screenPos().x()
        print evnt.screenPos().y()


        self.ix = int(evnt.screenPos().x()/Setting.WIDTH)
        self.iy = int(evnt.screenPos().y()/Setting.HEIGHT)
        print self.ix , self.iy
app = QApplication(sys.argv)
widget = MyWidget()
widget.show()
app.exec_()

【讨论】:

我是 pyqt4 的初学者,你能说一下如何添加这个小部件 ex:widget = QtGui.MyWidget() 或正常 你必须安装 PyQt 包。然后你从中导入 QtGui 非常感谢..在这个wedget中我想在中间画一个3d图我可以写我的代码 查看这个答案***.com/questions/35316781/drawing-a-polygon-in-pyqt @Azazel 将 widget = MyWidget 更改为 widget = MyWidget()

以上是关于如何使用 mousepressEvent 打开一个新的小部件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PyQt 中为 Qt-Designer 小部件实现 MousePressEvent

如何在类中实现mousePressEvent(QMouseEvent * event)?

使用 mousePressEvent() 和 mouseReleaseEvent() 在 QTextBrowser 中选择文本

mousePressEvent 没有正确绑定?

使用 PyQT,如何为带有自定义列表的 QComboBox 过滤 mousePressEvent

MousePressEvent 在 QPushbutton 上不起作用