May-19-2020, 05:05 PM
I want to open a window that is defined in this script by my custom hotkey, in this case CTRL + TAB. I have this script in Maya(2020):
from PySide2 import QtWidgets, QtCore, QtGui from PySide2.QtCore import QPropertyAnimation, QEasingCurve, QSize from PySide2.QtGui import QKeySequence, QIcon, QFont, QPixmap, QWindow from PySide2.QtWidgets import QDesktopWidget, QAction, QCheckBox, QDialog, QShortcut from maya import OpenMayaUI from functools import partial import maya.cmds as cmds import sys import os try: from shiboken import wrapInstance import shiboken except: from shiboken2 import wrapInstance import shiboken2 as shiboken class MainWindow(QtWidgets.QMainWindow): def __init__(self, parent = None): window = OpenMayaUI.MQtUtil.mainWindow() mayaWindow = shiboken.wrapInstance(long(window), QtWidgets.QMainWindow) super(MainWindow, self).__init__(mayaWindow) self.setWindowTitle('Test Window') self.setStyleSheet("background-color: rgb(65, 65, 65);") self.setWindowFlags(QtCore.Qt.Popup | QtCore.Qt.WindowType.NoDropShadowWindowHint) self.resize(630, 400) self.releaseKeyboard() self.releaseMouse() # main widget mainWidget = QtWidgets.QWidget(self) self.setCentralWidget(mainWidget) # layout initialize self.mainLayout = QtWidgets.QVBoxLayout() mainWidget.setLayout(self.mainLayout) self.shortcutSetup() self.initialize() def shortcutSetup(self): QtWidgets.QShortcut(QtGui.QKeySequence(QtCore.Qt.Key_Escape), self, activated = self.closeWindow) def initialize(self, *args): cmds.evalDeferred('SetHotkey()', lp = True) def closeWindow(self): self.hide() def SetHotkey(*args): mayaVersion = cmds.about(version=True) operatingSystem = sys.platform mainWindow = wrapInstance(long(OpenMayaUI.MQtUtil.mainWindow()), QtWidgets.QWidget) launcherAction = QtWidgets.QAction(mainWindow) hotkey = 'CTRL + TAB' launcherAction.setShortcut(QtGui.QKeySequence(QtCore.Qt.CTRL + QtCore.Qt.Key_Tab)) def launcherHotkeyStrike(*args): print 'launcherHotkeyStrike' cmds.evalDeferred('StartApp()') launcherAction.setShortcutContext(QtCore.Qt.ApplicationShortcut) print hotkey launcherAction.triggered.connect(launcherHotkeyStrike) mainWindow.addAction(launcherAction) def StartApp(*args): app = QtWidgets.QApplication.instance() if app is None: app = QtWidgets.QApplication(sys.argv) w = MainWindow() w.show() #sys.exit(app.exec_()) if __name__ == '__main__': StartApp()It only works as intended the first time, that means that a window pops up when I run the hotkey but the second time nothing happens. Why is that so?