# -*- 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 CustomPlainTextEdit(QtWidgets.QPlainTextEdit):
def __init__(self, parent=None):
super(CustomPlainTextEdit, self).__init__(parent)
def keyPressEvent(self, event):
super(CustomPlainTextEdit, self).keyPressEvent(event)
key = event.key()
if key == QtCore.Qt.Key_0:
print("0 key pressed.")
elif key == QtCore.Qt.Key_A:
print("A key pressed")
elif key == QtCore.Qt.Key_Enter:
print("Enter key pressed") # 小鍵盤迴車鍵
elif key == QtCore.Qt.Key_Return:
print("Return key pressed") # 大鍵盤迴車鍵
ctrl = event.modifiers() == QtCore.Qt.ControlModifier # ControlModifier/ShiftModifier/AltModifier
print("Control Modifiers: {0}".format(ctrl))
ctrl_alt = event.modifiers() == (QtCore.Qt.ControlModifier | QtCore.Qt.AltModifier)
print("Ctrl+Alt Modifiers: {0}".format(ctrl_alt))
if key == QtCore.Qt.Key_Return or key == QtCore.Qt.Key_Enter:
if ctrl:
print("Execute Code")
return
elif ctrl_alt:
print("Execute Line")
return
# print("Key Pressed: {0}".format(event.text()))
def keyReleaseEvent(self, event):
super(CustomPlainTextEdit, self).keyReleaseEvent(event)
# print("Key Released: {0}".format(event.text()))
class KeypressExample(QtWidgets.QDialog):
WINDOW_TITLE = "Keypress Example"
def __init__(self, parent=maya_main_window()):
super(KeypressExample, 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.plain_text = CustomPlainTextEdit()
def create_layout(self):
main_layout = QtWidgets.QVBoxLayout(self)
main_layout.setContentsMargins(5, 5, 5, 5)
main_layout.addWidget(self.plain_text)
def create_connections(self):
pass
def showWindow():
global dialog
try:
dialog.close()
dialog.deleteLater()
except:
pass
dialog = KeypressExample()
dialog.show()
if __name__ == "__main__":
try:
dialog.close()
dialog.deleteLater()
except:
pass
dialog = KeypressExample()
dialog.show()
KeypressEvent
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.