Last active
November 16, 2018 23:51
-
-
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 file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
"""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