Skip to content

Commit 256a1ac

Browse files
committed
pyqt window can now be resized
1 parent c04b893 commit 256a1ac

File tree

2 files changed

+23
-6
lines changed

2 files changed

+23
-6
lines changed

demosys/context/pyqt/window.py

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,18 @@ def __init__(self):
5252
self.buffer_width = rect.width() * self.widget.devicePixelRatio()
5353
self.buffer_height = rect.height() * self.widget.devicePixelRatio()
5454

55-
self.widget.setFixedSize(self.width, self.height)
55+
if self.resizable:
56+
size_policy = QtWidgets.QSizePolicy(
57+
QtWidgets.QSizePolicy.Expanding,
58+
QtWidgets.QSizePolicy.Expanding,
59+
)
60+
self.widget.setSizePolicy(size_policy)
61+
self.widget.resize(self.width, self.height)
62+
else:
63+
self.widget.setFixedSize(self.width, self.height)
5664

5765
self.widget.move(QtWidgets.QDesktopWidget().rect().center() - self.widget.rect().center())
66+
self.widget.resizeGL = self.resize # Needs to be set before show()
5867
self.widget.show()
5968

6069
if not self.cursor:
@@ -70,7 +79,6 @@ def __init__(self):
7079
self.widget.keyPressEvent = self.keyPressEvent
7180
self.widget.keyReleaseEvent = self.keyReleaseEvent
7281
self.widget.mouseMoveEvent = self.mouseMoveEvent
73-
self.widget.resizeGL = self.resizeGL
7482

7583
# Attach to the context
7684
self.ctx = moderngl.create_context(require=self.gl_version.code)
@@ -104,12 +112,21 @@ def mouseMoveEvent(self, event):
104112
"""
105113
self.cursor_event(event.x(), event.y(), 0, 0)
106114

107-
def resizeGL(self, width, height):
115+
def resize(self, width, height):
108116
"""
109117
Pyqt specific resize callback.
110118
The window currently do not support resizing.
111119
"""
112-
print("Resize", width, height)
120+
if not self.fbo:
121+
return
122+
123+
self.width = width
124+
self.height = height
125+
self.buffer_width = self.width * self.widget.devicePixelRatio()
126+
self.buffer_height = self.height * self.widget.devicePixelRatio()
127+
128+
print(width, height)
129+
super().resize(width, height)
113130

114131
def swap_buffers(self):
115132
"""

examples/settings.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@
1212
"size": (1280, 720),
1313
"aspect_ratio": 16 / 9,
1414
"fullscreen": False,
15-
"resizable": True,
15+
"resizable": False,
1616
"title": "Examples",
1717
"vsync": True,
18-
"cursor": False,
18+
"cursor": True,
1919
"samples": 4,
2020
}
2121

0 commit comments

Comments
 (0)