|
from PyQt5.QtCore import * |
|
from PyQt5.QtGui import * |
|
from PyQt5.QtWidgets import * |
|
|
|
class QXMainWindow(QWidget): |
|
""" |
|
Custom mainwindow class that provides global single instance and event listeners |
|
""" |
|
inst = None |
|
def __init__(self, *args, **kwargs): |
|
super().__init__(*args, **kwargs) |
|
if QXMainWindow.inst is not None: |
|
raise Exception("QXMainWindow can only be one.") |
|
QXMainWindow.inst = self |
|
|
|
self.keyPressEvent_listeners = [] |
|
self.keyReleaseEvent_listeners = [] |
|
self.setFocusPolicy(Qt.WheelFocus) |
|
|
|
def add_keyPressEvent_listener(self, func): |
|
self.keyPressEvent_listeners.append (func) |
|
|
|
def add_keyReleaseEvent_listener(self, func): |
|
self.keyReleaseEvent_listeners.append (func) |
|
|
|
def keyPressEvent(self, ev): |
|
super().keyPressEvent(ev) |
|
for func in self.keyPressEvent_listeners: |
|
func(ev) |
|
|
|
def keyReleaseEvent(self, ev): |
|
super().keyReleaseEvent(ev) |
|
for func in self.keyReleaseEvent_listeners: |
|
func(ev) |