MCPcopy
hub / github.com/PyQt5/PyQt / BackingPaint

Class BackingPaint

Demo/Lib/BackingPaint.py:27–122  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

25
26
27class BackingPaint(QThread):
28 resized = Signal(int, int)
29
30 def __init__(self, widget, *args, **kwargs):
31 super().__init__(*args, **kwargs)
32 self._widget = widget
33 self._window = None
34 self._backingStore = None
35 self._rect = QRect()
36 self._size = QSize(100, 100)
37 self._oldSize = QSize(100, 100)
38 self._resized = Event()
39 self._exited = Event()
40 self._init()
41
42 def _init(self):
43 self._widget.setAttribute(Qt.WA_NativeWindow)
44 self._widget.setAttribute(Qt.WA_PaintOnScreen)
45 self._widget.setAttribute(Qt.WA_StaticContents)
46 self._widget.setAttribute(Qt.WA_OpaquePaintEvent)
47 self._widget.setAttribute(Qt.WA_NoSystemBackground)
48 self._widget.setAttribute(Qt.WA_DontCreateNativeAncestors)
49 self._widget.setUpdatesEnabled(False)
50 self._widget.setAutoFillBackground(False)
51
52 self._window = self._widget.windowHandle()
53 self._window.create()
54
55 def stop(self):
56 self._exited.set()
57 self.requestInterruption()
58
59 def resize(self, w, h):
60 self._resized.set()
61 self._size = QSize(w, h)
62
63 def paintOnGui(self):
64 if self._backingStore and not self._exited.is_set():
65 self._backingStore.flush(QRegion(self._rect))
66
67 def run(self):
68 self.resized.connect(self.resize, Qt.QueuedConnection)
69 full = os.getenv("full")
70 delay = int(1000 / 60)
71 isMac = platform.system() == "Darwin"
72
73 # create backingStore
74 self._oldSize = self._widget.size()
75 self._backingStore = QBackingStore(self._window)
76 self._backingStore.resize(self._oldSize)
77
78 # paint device
79 rect = QRect(QPoint(0, 0), self._oldSize)
80 self._backingStore.beginPaint(QRegion(rect))
81 if not self._backingStore.paintDevice():
82 print("paintDevice is None")
83 return
84 self._backingStore.endPaint()

Callers 1

__init__Method · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected