Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
iperov
GitHub Repository: iperov/deepfacelab
Path: blob/master/core/qtex/QXMainWindow.py
1112 views
1
from PyQt5.QtCore import *
2
from PyQt5.QtGui import *
3
from PyQt5.QtWidgets import *
4
5
class QXMainWindow(QWidget):
6
"""
7
Custom mainwindow class that provides global single instance and event listeners
8
"""
9
inst = None
10
def __init__(self, *args, **kwargs):
11
super().__init__(*args, **kwargs)
12
if QXMainWindow.inst is not None:
13
raise Exception("QXMainWindow can only be one.")
14
QXMainWindow.inst = self
15
16
self.keyPressEvent_listeners = []
17
self.keyReleaseEvent_listeners = []
18
self.setFocusPolicy(Qt.WheelFocus)
19
20
def add_keyPressEvent_listener(self, func):
21
self.keyPressEvent_listeners.append (func)
22
23
def add_keyReleaseEvent_listener(self, func):
24
self.keyReleaseEvent_listeners.append (func)
25
26
def keyPressEvent(self, ev):
27
super().keyPressEvent(ev)
28
for func in self.keyPressEvent_listeners:
29
func(ev)
30
31
def keyReleaseEvent(self, ev):
32
super().keyReleaseEvent(ev)
33
for func in self.keyReleaseEvent_listeners:
34
func(ev)
35