Skip to content

Instantly share code, notes, and snippets.

@AhmetCanSolak
Last active November 16, 2018 23:51
Show Gist options
  • Save AhmetCanSolak/ea1a1103a6452aa9ca9df8a548ab93d9 to your computer and use it in GitHub Desktop.
Save AhmetCanSolak/ea1a1103a6452aa9ca9df8a548ab93d9 to your computer and use it in GitHub Desktop.
This is gist to reproduce the problem i'm facing with PyQt5 and VisPy
"""This gist created to demonstrate an layout error, however, problem is solved with switching to anaconda/python
"""
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QSlider, QScrollArea, QFrame, QPushButton
from PyQt5.QtWidgets import QVBoxLayout, QHBoxLayout
from vispy.scene import SceneCanvas, PanZoomCamera
class Left(QHBoxLayout):
def __init__(self):
super().__init__()
self.addWidget(QSlider(Qt.Vertical))
self.addWidget(QSlider(Qt.Vertical))
class Right(QFrame):
def __init__(self):
super().__init__()
dim_buttons_layout = QHBoxLayout()
dim_buttons_layout.addWidget(QPushButton("1D"))
dim_buttons_layout.addWidget(QPushButton("2D"))
dim_buttons_layout.addWidget(QPushButton("3D"))
Right_layout = QVBoxLayout()
Right_layout.addLayout(dim_buttons_layout)
Right_layout.addWidget(QPushButton("asdF"))
Right_layout.addWidget(QPushButton("fdsA"))
self.setLayout(Right_layout)
class Viewer(QWidget):
def __init__(self):
super().__init__()
self.canvas = SceneCanvas(keys=None, vsync=True)
layout = QVBoxLayout(self)
layout.setContentsMargins(0, 0, 0, 0)
self.setLayout(layout)
# layout.addWidget(self.canvas.native)
self.view = self.canvas.central_widget.add_view()
self.view.camera = PanZoomCamera(aspect=1)
self.view.camera.flip = (0, 1, 0)
self.view.camera.set_range()
class Window:
def __init__(self):
self._qt_window = QMainWindow()
self._qt_central_widget = QWidget()
self._qt_window.setCentralWidget(self._qt_central_widget)
self._qt_central_widget.setLayout(QHBoxLayout())
self._qt_window.statusBar().showMessage('Ready For Action')
def add_viewer(self):
left = Left()
right = Right()
viewer = Viewer()
self._qt_central_widget.layout().addLayout(left)
self._qt_central_widget.layout().addWidget(viewer)
self._qt_central_widget.layout().addWidget(right)
def resize(self, *args):
self._qt_window.resize(*args)
def show(self):
self.resize(self._qt_window.layout().sizeHint())
self._qt_window.show()
self._qt_window.raise_()
def main():
win = Window()
win.add_viewer()
win.show()
return win
if __name__ == '__main__':
application = QApplication(sys.argv)
main_win = main()
sys.exit(application.exec_())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment