# -*- coding: utf-8 -*-
"""
Author: Virgil
Date: 2020/6/6 11:18
"""
from PySide2 import QtCore
from PySide2 import QtGui
from PySide2 import QtWidgets
from shiboken2 import wrapInstance
import maya.OpenMayaUI as omui
import maya.cmds as cmds
import maya.mel as mel
def maya_main_window():
"""
Return the Maya main window widget as a Python object
"""
main_window_ptr = omui.MQtUtil.mainWindow()
return wrapInstance(long(main_window_ptr), QtWidgets.QWidget)
class MoveableWidget(QtWidgets.QWidget):
def __init__(self, x, y, width, height, color, parent=None):
super(MoveableWidget, self).__init__(parent)
self.setFixedSize(width, height)
self.move(x, y)
self.color = color
self.original_color = color
self.move_enabled = False
def mousePressEvent(self, event):
print("Mouse Button Pressed")
if event.button() == QtCore.Qt.LeftButton and event.modifiers() == QtCore.Qt.ControlModifier:
self.initial_pos = self.pos()
self.global_pos = event.globalPos()
self.move_enabled = True
def mouseReleaseEvent(self, event):
print("Mouse Button Released")
if self.move_enabled:
self.move_enabled = False
def mouseDoubleClickEvent(self, event):
print("Mouse Double-Click")
if self.color == self.original_color:
self.color = QtCore.Qt.yellow
else:
self.color = self.original_color
self.update()
def mouseMoveEvent(self, event):
print("Mouse Move")
if self.move_enabled:
diff = event.globalPos() - self.global_pos
self.move(self.initial_pos + diff)
def paintEvent(self, event):
painter = QtGui.QPainter(self)
painter.fillRect(event.rect(), self.color)
class MouseEventExample(QtWidgets.QDialog):
WINDOW_TITLE = "Mouse Event Example"
def __init__(self, parent=maya_main_window()):
super(MouseEventExample, self).__init__(parent)
self.setWindowTitle(self.WINDOW_TITLE)
self.setMinimumSize(600, 400)
self.setWindowFlags(self.windowFlags() ^ QtCore.Qt.WindowContextHelpButtonHint)
self.create_widgets()
self.create_layout()
self.create_connections()
def create_widgets(self):
self.red_widget = MoveableWidget(100, 100, 24, 24, QtCore.Qt.red, self)
self.blue_widget = MoveableWidget(300, 300, 24, 24, QtCore.Qt.blue, self)
def create_layout(self):
main_layout = QtWidgets.QVBoxLayout(self)
main_layout.setContentsMargins(5, 5, 5, 5)
def create_connections(self):
pass
def showWindow():
global dialog
try:
dialog.close()
dialog.deleteLater()
except:
pass
dialog = MouseEventExample()
dialog.show()
if __name__ == "__main__":
try:
dialog.close()
dialog.deleteLater()
except:
pass
dialog = MouseEventExample()
dialog.show()
MouseEvent
最新推荐文章于 2021-03-27 08:48:48 发布