为了账号安全,请及时绑定邮箱和手机立即绑定

PYQT Maya QMouseEvent 在我包装它之后将无法正常工作

PYQT Maya QMouseEvent 在我包装它之后将无法正常工作

POPMUISE 2022-08-11 20:18:52
from PySide2 import QtGui,QtCore,QtWidgetsfrom PySide2.QtGui import*from PySide2.QtCore import *from PySide2.QtWidgets import *from shiboken2 import wrapInstanceimport maya.OpenMayaUI as muiimport sysclass ui(QWidget):    def __init__(self,parent):        super(ui,self).__init__(parent)        self.resize(300,500)        self.mainWindow = QtWidgets.QMainWindow(parent)        self.setupUI(self.mainWindow)        self.setFocus()    def setupUI(self,mainWindow):        mymainWindow = QWidget(mainWindow)        mymainWindow.resize(300,500)    def mousePressEvent(self,e):        print 'sdfasdf'        if e.button()==Qt.RightButton:            print "Clickkkk"    def Show(self):        self.mainWindow.show()class app():    def __init__(self):        self.ptr = mui.MQtUtil.mainWindow()        self.ptr = wrapInstance(long(self.ptr),QtWidgets.QWidget)              self.ui = ui(self.ptr)    def runApp(self):        self.ui.Show()        self.ui.setFocus()tt = app()tt.runApp()以下是我正在测试的代码。使用后不再工作。wrapInstancemouseEvent但如果我没有包装它,那就是工作不工作class app():    def __init__(self):        self.ptr = mui.MQtUtil.mainWindow()        self.ptr = wrapInstance(long(self.ptr),QtWidgets.QWidget)              self.ui = ui(self.ptr)    def runApp(self):        self.ui.Show()        self.ui.setFocus()加工我还更改了UI类中的一些父结构class app():    def __init__(self):            self.ui = ui()    def runApp(self):        self.ui.Show()谁能解释为什么在我包装后将无法正常工作?如何使它工作?MouseEvent
查看完整描述

1 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

问题的症结在于: .这将运行您的自定义方法,而该方法又运行此 .这会导致显示,但您子类化为 ,而不是 !因此,它没有运行事件,因为您单击了错误的小部件。self.ui.Show()self.mainWindow.show()self.mainWindowmousePressEventuiself.mainWindow

相反,因为 是 一个 , 调用 。您可能还需要输入 的构造函数。这样,当用户单击鼠标事件时,鼠标事件将按预期运行。uiQWidgetself.ui.show()self.setWindowFlags(QtCore.Qt.Window)ui

一些旁注:

我怀疑你是否真的想在.它只是觉得很奇怪。考虑对 a 进行子类化,因为它应该是“顶级”小部件。QMainWindowQWidgetQMainWindow

还要尽量避免像 这样导入模块,而是像这样导入它们。这是不好的做法,会污染模块的范围,并使代码更加不可读/不可维护,因为很难追溯这些变量的来源。from PySide2.QtCore import *from PySide2 import QtCore

哦,为了上帝的爱,使用一些垂直的白间距:)


查看完整回答
反对 回复 2022-08-11
  • 1 回答
  • 0 关注
  • 79 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号