def initUI(self) -> None: noImageSetLabel = QLabel() noImageSetLabel.setObjectName("noImageSetLabel") noImageSetLabel.setAlignment(Qt.AlignCenter) noImageSetLabel.setText("No image selected") imageTableViewLayout = QVBoxLayout() imageTableViewLayout.addWidget(self.imageTableView) imageTableBox = QGroupBox() imageTableBox.setTitle("Images") imageTableBox.setLayout(imageTableViewLayout) imageTableSplitter = QSplitter() imageTableSplitter.setHandleWidth(12) imageTableSplitter.setOrientation(Qt.Vertical) imageTableSplitter.addWidget(imageTableBox) imageTableSplitter.setSizes([500, 500]) self.imageTableSplitter = imageTableSplitter splitter = QSplitter() splitter.setHandleWidth(12) splitter.setObjectName("annotationSplitter") splitter.setOrientation(Qt.Horizontal) splitter.addWidget(imageTableSplitter) splitter.addWidget(noImageSetLabel) splitter.setSizes([200, 300]) self.splitter = splitter layout = QVBoxLayout() layout.addWidget(splitter) self.setLayout(layout)
def __init__(self, *args, **kwargs): super(SplitGridView, self).__init__(*args, **kwargs) self.top_splitter = QSplitter(Qt.Horizontal) self.top_splitter.setSizes([100, 200]) self.bottom_splitter = QSplitter(Qt.Horizontal) self.bottom_splitter.setSizes([100, 200]) # connect splitter1 and splitter2 to move together # TODO which version is desired? connect splitter or free moving? # self.top_splitter.splitterMoved.connect(self.moveSplitter) # self.bottom_splitter.splitterMoved.connect(self.moveSplitter) # self._spltA = self.top_splitter # self._spltB = self.bottom_splitter self.outer_splitter = QSplitter(Qt.Vertical) self.outer_splitter.insertWidget(0, self.top_splitter) self.outer_splitter.insertWidget(1, self.bottom_splitter) self.outer_splitter.setSizes([200, 400]) self.layout.addWidget(self.outer_splitter) self.setLayout(self.layout) QApplication.setStyle(QStyleFactory.create('Cleanlooks')) self.setGeometry(300, 300, 300, 200) self.max_canvases = 4 # Set attrs for when the buttons are created self.icon = QIcon(path('icons/2x2grid.png')) self.tool_tip = "2x2 Grid View" self.whats_this = "Displays up to four visualized data items in a grid layout."
def __init__(self, *args, **kwargs): super(SplitGridView, self).__init__(*args, **kwargs) self.top_splitter = QSplitter(Qt.Horizontal) self.top_splitter.setSizes([100, 200]) self.bottom_splitter = QSplitter(Qt.Horizontal) self.bottom_splitter.setSizes([100, 200]) # connect splitter1 and splitter2 to move together # TODO which version is desired? connect splitter or free moving? # self.top_splitter.splitterMoved.connect(self.moveSplitter) # self.bottom_splitter.splitterMoved.connect(self.moveSplitter) # self._spltA = self.top_splitter # self._spltB = self.bottom_splitter self.outer_splitter = QSplitter(Qt.Vertical) self.outer_splitter.insertWidget(0, self.top_splitter) self.outer_splitter.insertWidget(1, self.bottom_splitter) self.outer_splitter.setSizes([200, 400]) self.layout.addWidget(self.outer_splitter) self.setLayout(self.layout) QApplication.setStyle(QStyleFactory.create('Cleanlooks')) self.setGeometry(300, 300, 300, 200) self.max_canvases = 4 self.icon = QIcon(path('icons/2x2grid.png'))
def __init__(self, *args, catalog, menuBar, zmq_address=None, **kwargs): super().__init__(*args, **kwargs) # Define models. search_state = SearchState(catalog=catalog) self.search_model = search_state.search_results_model # Define widgets. self.search_widget = SearchWidget() self.summary_widget = SummaryWidget() left_pane = QSplitter(Qt.Vertical) left_pane.addWidget(self.search_widget) left_pane.addWidget(self.summary_widget) layout = QHBoxLayout() splitter = QSplitter(Qt.Horizontal) layout.addWidget(splitter) splitter.addWidget(left_pane) self.setLayout(layout) def show_double_clicked_entry(index): search_state.search_results_model.emit_open_entries(None, [index]) # Set models, connect signals, and set initial values. now = time.time() ONE_WEEK = 60 * 60 * 24 * 7 self.search_widget.search_results_widget.setModel( search_state.search_results_model) self.search_widget.search_input_widget.search_bar.textChanged.connect( search_state.search_results_model.on_search_text_changed) self.search_widget.catalog_selection_widget.catalog_list.setModel( search_state.catalog_selection_model) self.search_widget.search_input_widget.until_widget.dateTimeChanged.connect( search_state.search_results_model.on_until_time_changed) self.search_widget.search_input_widget.until_widget.setDateTime( QDateTime.fromSecsSinceEpoch(now + ONE_WEEK)) self.search_widget.search_input_widget.since_widget.dateTimeChanged.connect( search_state.search_results_model.on_since_time_changed) self.search_widget.search_input_widget.since_widget.setDateTime( QDateTime.fromSecsSinceEpoch(now - ONE_WEEK)) self.search_widget.catalog_selection_widget.catalog_list.currentIndexChanged.connect( search_state.set_selected_catalog) self.search_widget.search_results_widget.selectionModel( ).selectionChanged.connect( search_state.search_results_model.emit_selected_result) self.search_widget.search_results_widget.doubleClicked.connect( show_double_clicked_entry) search_state.search_results_model.selected_result.connect( self.summary_widget.set_entries) search_state.search_results_model.valid_custom_query.connect( self.search_widget.search_input_widget.mark_custom_query) search_state.sig_update_header.connect( self.search_widget.search_results_widget.hide_hidden_columns) search_state.enabled = True search_state.search()
def initUi(self): print('Initializing GUI...') w, h = 1000, 1000 self.find = ZhuNoteFind(self) # self as parent self.tree = ZhuNoteTree() self.form = ZhuNoteForm(self.path) self.wbrs = QWebEngineView() splitter1 = QSplitter(Qt.Horizontal) splitter1.addWidget(self.form) splitter1.addWidget(self.wbrs) splitter1.setSizes([w / 2, w / 2]) splitter = QSplitter(Qt.Vertical) splitter.addWidget(self.tree) splitter.addWidget(splitter1) splitter.setStretchFactor(0, 1) splitter.setStretchFactor(1, 2) vbox = QVBoxLayout() vbox.addWidget(self.find) vbox.addWidget(splitter) self.setLayout(vbox) self.wbrs.setHtml(self.html_hi) self.tree.sigViewItem.connect(self.form.viewDict) self.tree.sigViewItem.connect(self.viewHtml) self.find.sigClear.connect(self.clear) self.find.sigString.connect(self.search) self.find.sigUpdateMaster.connect(self.updateMaster) self.find.sigFont.connect(self.setFont) self.setWindowTitle('Main - ZhuNote') #self.setGeometry(x, y, w, h) #self.move(x, y) self.resize(w, h) #self.show() #self.tree.show() #self.form.show() styleName = 'Cleanlooks' # QStyleFactory.keys() # ['Windows', 'Motif', 'CDE', 'Plastique', 'GTK+', 'Cleanlooks'] QApplication.setStyle(QStyleFactory.create(styleName)) self.find.txtSearch.setFocus() # not work yet self.actExit = QAction('Exit', self) self.actExit.setShortcut('Ctrl+Q') self.actExit.triggered.connect(self.closeAllWindows) self.addAction(self.actExit)
def __init__( self, *args, samplesEditorView: SamplesEditorView, devicesEditorView: DevicesEditorView, blockDiagramEditorView: BlockDiagramEditorView, **kwargs, ): super().__init__(*args, **kwargs) splitter = QSplitter() splitter.setOrientation(Qt.Horizontal) splitter.addWidget(samplesEditorView) splitter.addWidget(devicesEditorView) splitter.addWidget(blockDiagramEditorView) splitter.setHandleWidth(8) splitter.setStretchFactor(0, 1) splitter.setStretchFactor(1, 1) splitter.setStretchFactor(2, 1) splitter.setChildrenCollapsible(False) splitter.setContentsMargins(0, 0, 0, 0) splitter.setSizes([2000, 2000, 2000]) scrollArea = QScrollArea() scrollArea.setWidget(splitter) scrollArea.setWidgetResizable(True) parentLayout = QVBoxLayout() parentLayout.addWidget(scrollArea, 1) self.setLayout(parentLayout)
def __init__(self, parent=None): QDialog.__init__(self, parent) self.main = parent # Widgets self.pages_widget = QStackedWidget() self.pages_widget.setMinimumWidth(600) self.contents_widget = QListWidget() self.button_reset = QPushButton(_('Reset to defaults')) bbox = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Apply | QDialogButtonBox.Cancel) self.apply_btn = bbox.button(QDialogButtonBox.Apply) self.ok_btn = bbox.button(QDialogButtonBox.Ok) # Widgets setup # Destroying the C++ object right after closing the dialog box, # otherwise it may be garbage-collected in another QThread # (e.g. the editor's analysis thread in Spyder), thus leading to # a segmentation fault on UNIX or an application crash on Windows self.setAttribute(Qt.WA_DeleteOnClose) self.setWindowTitle(_('Preferences')) self.setWindowIcon(ima.icon('configure')) self.contents_widget.setMovement(QListView.Static) self.contents_widget.setSpacing(1) self.contents_widget.setCurrentRow(0) self.contents_widget.setMinimumWidth(220) self.contents_widget.setMinimumHeight(400) # Layout hsplitter = QSplitter() hsplitter.addWidget(self.contents_widget) hsplitter.addWidget(self.pages_widget) hsplitter.setStretchFactor(0, 1) hsplitter.setStretchFactor(1, 2) btnlayout = QHBoxLayout() btnlayout.addWidget(self.button_reset) btnlayout.addStretch(1) btnlayout.addWidget(bbox) vlayout = QVBoxLayout() vlayout.addWidget(hsplitter) vlayout.addLayout(btnlayout) self.setLayout(vlayout) # Signals and slots if self.main: self.button_reset.clicked.connect(self.main.reset_spyder) self.pages_widget.currentChanged.connect(self.current_page_changed) self.contents_widget.currentRowChanged.connect( self.pages_widget.setCurrentIndex) bbox.accepted.connect(self.accept) bbox.rejected.connect(self.reject) bbox.clicked.connect(self.button_clicked) # Ensures that the config is present on spyder first run CONF.set('main', 'interface_language', load_lang_conf())
def __init__(self): super().__init__() self.gateway = QGateWay(self) self.tree = QTreeView(self) self.tree.setHeaderHidden(True) # self.tree.setSelectionMode(QTreeView.MultiSelection) self.model = OMEROTreeModel(self.gateway, self) self.thumb_grid = ThumbGrid(self.gateway, self) self.thumb_grid.hide() self.login = LoginForm(self.gateway, self) self.login.setWindowFlags(self.login.windowFlags() & ~Qt.Dialog) self.tree.setModel(self.model) self.tree.selectionModel().selectionChanged.connect( self._on_tree_selection) self.thumb_grid.itemSelectionChanged.connect( self._on_thumbnail_selected) layout = QVBoxLayout(self) self.splitter = QSplitter(Qt.Vertical, self) self.status = QLabel(self) self.status.hide() self.status.setAlignment(Qt.AlignCenter) self.status.setStyleSheet("QLabel{color: #AAA;}") layout.addWidget(self.status) layout.addWidget(self.splitter) self.splitter.addWidget(self.login) self.splitter.addWidget(self.tree) self.splitter.addWidget(self.thumb_grid) self.gateway.connected.connect(self._show_connection_label)
def create_page_board(self): self.load_players = self.create_browsefile("Players file") self.load_games = self.create_browsefile("Games file") btn_load = QPushButton("Load files") btn_load.clicked.connect(self.load_data) if self.path is not None: fn_players = osp.join(self.path, PLAYERS_FILENAME) fn_games = osp.join(self.path, GAMES_FILENAME) self.load_players.lineedit.edit.setText(fn_players) self.load_games.lineedit.edit.setText(fn_games) layout = QVBoxLayout() layout.addWidget(self.load_players) layout.addWidget(self.load_games) layout.addWidget(btn_load) wgt_load = QWidget() wgt_load.setLayout(layout) board = self.create_board() calendar = self.create_calendar() chart = self.create_chart() splt = QSplitter(Qt.Vertical) splt.addWidget(wgt_load) splt.addWidget(board) splt.addWidget(calendar) splt.addWidget(chart) layout = QVBoxLayout() layout.addWidget(splt) widget = QWidget(self) widget.setLayout(layout) return widget
def initUI(self): """ Define UI elements of the app's main window """ # Create navbars self.treeView = self.make_left_navbar() # Make overall layout main_layout = QHBoxLayout() splitter = QSplitter(Qt.Horizontal) splitter.addWidget(self.treeView) splitter.addWidget(self.make_central_column()) splitter.addWidget(self.make_right_navbar()) splitter.setSizes([200, 700, 10]) main_layout.addWidget(splitter) self.treeView.setHidden(True) # Create main window widget main_widget = QWidget() main_widget.setObjectName("MainWidget") main_widget.setLayout(main_layout) self.setCentralWidget(main_widget)
def __init__(self, presenter, dims_info, can_normalise, parent=None, conf=None): super().__init__(parent) self.presenter = presenter self.setWindowFlags(Qt.Window) self.setAttribute(Qt.WA_DeleteOnClose, True) self._splitter = QSplitter(self) self._data_view = SliceViewerDataView(presenter, dims_info, can_normalise, self, conf) self._splitter.addWidget(self._data_view) # peaks viewer off by default self._peaks_view = None layout = QHBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) layout.addWidget(self._splitter) self.setLayout(layout) # connect up additional peaks signals self.data_view.mpl_toolbar.peaksOverlayClicked.connect( self.peaks_overlay_clicked)
def __init__(self, *args, **kwargs): super(SplitThreeView, self).__init__(*args, **kwargs) self.top_splitter = QSplitter(Qt.Horizontal) self.top_splitter.setSizes([100, 200]) self.outer_splitter = QSplitter(Qt.Vertical) self.outer_splitter.insertWidget(0, self.top_splitter) self.layout.addWidget(self.outer_splitter) self.setLayout(self.layout) QApplication.setStyle(QStyleFactory.create('Cleanlooks')) self.setGeometry(300, 300, 300, 200) self.max_canvases = 3 self.icon = QIcon(path('icons/2x1grid.png'))
def __init__(self, parent=None, objname=None): QDialog.__init__(self, parent) # If used for data object in tree, the main is the tree widget. self.parent = parent self.objname = objname # Widgets self.pages_widget = QStackedWidget() self.contents_widget = QListWidget() self.button_reset = QPushButton(_('Reset to defaults')) bbox = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Apply | QDialogButtonBox.Cancel) self.apply_btn = bbox.button(QDialogButtonBox.Apply) # Widgets setup # Destroying the C++ object right after closing the dialog box, # otherwise it may be garbage-collected in another QThread # (e.g. the editor's analysis thread in Ezcad), thus leading to # a segmentation fault on UNIX or an application crash on Windows self.setAttribute(Qt.WA_DeleteOnClose) if self.objname is None: self.setWindowTitle(_('Preferences')) else: self.setWindowTitle(_('Preferences of ') + self.objname) self.setWindowIcon(ima.icon('configure')) self.contents_widget.setMovement(QListView.Static) self.contents_widget.setSpacing(1) self.contents_widget.setCurrentRow(0) # Layout hsplitter = QSplitter() hsplitter.addWidget(self.contents_widget) hsplitter.addWidget(self.pages_widget) hsplitter.setSizes([150,500]) btnlayout = QHBoxLayout() btnlayout.addWidget(self.button_reset) btnlayout.addStretch(1) btnlayout.addWidget(bbox) vlayout = QVBoxLayout() vlayout.addWidget(hsplitter) vlayout.addLayout(btnlayout) self.setLayout(vlayout) # Signals and slots self.pages_widget.currentChanged.connect(self.current_page_changed) self.contents_widget.currentRowChanged.connect( self.pages_widget.setCurrentIndex) bbox.accepted.connect(self.accept) bbox.rejected.connect(self.reject) bbox.clicked.connect(self.button_clicked) # Ensures that the config is present on ezcad first run CONF.set('main', 'interface_language', load_lang_conf())
def __init__(self, *args, **kwargs): super(SplitThreeView, self).__init__(*args, **kwargs) self.top_splitter = QSplitter(Qt.Horizontal) self.top_splitter.setSizes([100, 200]) self.outer_splitter = QSplitter(Qt.Vertical) self.outer_splitter.insertWidget(0, self.top_splitter) self.layout.addWidget(self.outer_splitter) self.setLayout(self.layout) QApplication.setStyle(QStyleFactory.create('Cleanlooks')) self.setGeometry(300, 300, 300, 200) self.max_canvases = 3 # Set attrs for when the buttons are created self.icon = QIcon(path('icons/2x1grid.png')) self.tool_tip = "3-Way Split View" self.whats_this = "Displays up to three visualized data items."
def __init__(self, *args): super(CatalogAndAnalysisSplitWidget, self).__init__(*args) self.splitter = QSplitter(Qt.Horizontal) self.catalog_view = MyImageView() self.results_view = ImageView() self.splitter.addWidget(self.catalog_view) self.splitter.addWidget(self.results_view) layout = QVBoxLayout() layout.addWidget(self.splitter) self.setLayout(layout)
def __init__(self): QMainWindow.__init__(self) self.setWindowIcon(get_icon("python.png")) self.setWindowTitle("Application example") # Instantiate dataset-related widgets: self.groupbox1 = DataSetShowGroupBox("Activable dataset", ExampleDataSet, comment="") self.groupbox2 = DataSetShowGroupBox("Standard dataset", AnotherDataSet, comment="") self.groupbox3 = DataSetEditGroupBox("Standard dataset", OtherDataSet, comment="") self.groupbox4 = DataSetEditGroupBox("Standard dataset", ExampleMultiGroupDataSet, comment="") self.groupbox3.SIG_APPLY_BUTTON_CLICKED.connect(self.update_window) self.update_groupboxes() splitter = QSplitter(self) splitter.addWidget(self.groupbox1) splitter.addWidget(self.groupbox2) splitter.addWidget(self.groupbox3) splitter.addWidget(self.groupbox4) self.setCentralWidget(splitter) self.setContentsMargins(10, 5, 10, 5) # File menu file_menu = self.menuBar().addMenu("File") quit_action = create_action( self, "Quit", shortcut="Ctrl+Q", icon=get_std_icon("DialogCloseButton"), tip="Quit application", triggered=self.close, ) add_actions(file_menu, (quit_action, )) # Edit menu edit_menu = self.menuBar().addMenu("Edit") editparam1_action = create_action(self, "Edit dataset 1", triggered=self.edit_dataset1) editparam2_action = create_action(self, "Edit dataset 2", triggered=self.edit_dataset2) editparam4_action = create_action(self, "Edit dataset 4", triggered=self.edit_dataset4) add_actions(edit_menu, (editparam1_action, editparam2_action, editparam4_action))
def __init__(self, parent, **kwargs): QWidget.__init__(self, parent) self.plugin = parent.get_plugin() self.last_modelpath = None # Create and place Model Selector txt = _("Model") if sys.platform == 'darwin': expr_label = QLabel(" " + txt) else: expr_label = QLabel(txt) # expr_label.setAlignment(Qt.AlignCenter | Qt.AlignRight) self.model_selector = MxModelSelector(self) selector_layout = QHBoxLayout() selector_layout.addWidget(expr_label) selector_layout.addWidget(self.model_selector) selector_layout.insertStretch(-1, 1) selector_layout.setStretch(0, 0) selector_layout.setStretch(1, 1) # Create widget and add to dockwindow self.explorer = MxExplorer(self) # Create code list self.codelist = MxCodeListWidget(self) self.propwidget = MxPropertyWidget(self, orientation=Qt.Vertical) self.datalist = MxDataListWidget(self, orientation=Qt.Vertical) # Create splitter self.splitter = QSplitter(self) self.splitter.setContentsMargins(0, 0, 0, 0) # self.splitter.addWidget(self.widget) # self.splitter.setStretchFactor(0, 5) # self.splitter.setStretchFactor(1, 1) self.tabwidget = QTabWidget(parent=self) # self.tabwidget.setContentsMargins(0, 0, 0, 0) MxMainWidget.IdxProperties = self.tabwidget.addTab(self.propwidget, "Properties") MxMainWidget.IdxFormulas = self.tabwidget.addTab(self.codelist, "Formulas") MxMainWidget.IdxDataList = self.tabwidget.addTab(self.datalist, "Data") # Layout management self.splitter.addWidget(self.explorer) self.splitter.addWidget(self.tabwidget) layout = create_plugin_layout(selector_layout, self.splitter) self.setLayout(layout) self.setFocusPolicy(Qt.ClickFocus)
def __init__(self, *args, **kwargs): super(SplitHorizontal, self).__init__(*args, **kwargs) self.splitter = QSplitter(Qt.Vertical) self.splitter.setSizes([100, 200]) self.layout.addWidget(self.splitter) self.setLayout(self.layout) QApplication.setStyle(QStyleFactory.create('Cleanlooks')) self.setGeometry(300, 300, 300, 200) self.max_canvases = 2 self.icon = QIcon(path('icons/1x1hor.png'))
def __init__(self, parent, **kwargs): QWidget.__init__(self, parent) if spyder.version_info > (5,): self.plugin = parent.get_plugin() else: self.plugin = parent self.last_modelpath = None # Create tool bar if "options_button" in kwargs: self.options_button = kwargs["options_button"] else: self.options_button = None self.plugin_actions = [] MxToolBarMixin.__init__( self, options_button=self.options_button, plugin_actions=self.plugin_actions ) # Create widget and add to dockwindow self.explorer = MxExplorer(self) # Create code list self.codelist = MxCodeListWidget(self) self.propwidget = MxPropertyWidget(self, orientation=Qt.Vertical) self.datalist = MxDataListWidget(self, orientation=Qt.Vertical) # Create splitter self.splitter = QSplitter(self) self.splitter.setContentsMargins(0, 0, 0, 0) # self.splitter.addWidget(self.widget) # self.splitter.setStretchFactor(0, 5) # self.splitter.setStretchFactor(1, 1) self.tabwidget = QTabWidget(parent=self) # self.tabwidget.setContentsMargins(0, 0, 0, 0) MxMainWidget.IdxProperties = self.tabwidget.addTab(self.propwidget, "Properties") MxMainWidget.IdxFormulas = self.tabwidget.addTab(self.codelist, "Formulas") MxMainWidget.IdxDataList = self.tabwidget.addTab(self.datalist, "Data") # Layout management self.splitter.addWidget(self.explorer) self.splitter.addWidget(self.tabwidget) layout = create_plugin_layout(self.tools_layout, self.splitter) self.setFocusPolicy(Qt.ClickFocus) self.setLayout(layout)
def __init__(self, parent=None, background_color=None): if PYQT5: super().__init__(parent=parent, class_parent=parent) else: QWidget.__init__(self, parent) SpyderWidgetMixin.__init__(self, class_parent=parent) self.shellwidget = None self.is_visible = True self.figviewer = None self.setup_in_progress = False self.background_color = background_color self.mute_inline_plotting = None self.zoom_disp_value = None # Setup the figure viewer. self.figviewer = FigureViewer(parent=self, background_color=self.background_color) self.figviewer.sig_context_menu_requested.connect( self.sig_figure_menu_requested) self.figviewer.sig_figure_loaded.connect(self.sig_figure_loaded) self.figviewer.sig_zoom_changed.connect(self.sig_zoom_changed) self.figviewer.sig_zoom_changed.connect(self._update_zoom_value) # Setup the thumbnail scrollbar. self.thumbnails_sb = ThumbnailScrollBar( self.figviewer, parent=self, background_color=self.background_color, ) self.thumbnails_sb.sig_context_menu_requested.connect( self.sig_thumbnail_menu_requested) self.thumbnails_sb.sig_save_dir_changed.connect( self.sig_save_dir_changed) self.thumbnails_sb.sig_redirect_stdio_requested.connect( self.sig_redirect_stdio_requested) # Create the layout. self.splitter = splitter = QSplitter(parent=self) splitter.addWidget(self.figviewer) splitter.addWidget(self.thumbnails_sb) splitter.setFrameStyle(QScrollArea().frameStyle()) splitter.setContentsMargins(0, 0, 0, 0) layout = QHBoxLayout(self) layout.addWidget(splitter) self.setLayout(layout) layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(0) self.setContentsMargins(0, 0, 0, 0)
def __init__(self): super(MyImageWidget, self).__init__() self.splitter = QSplitter(Qt.Horizontal) self.catalog_view = MyImageView() self.results_view = ImageView() # When pulling out, need to make sure other modules reference # viewers correctly ..... self.splitter.addWidget(self.catalog_view) self.splitter.addWidget(self.results_view) layout = QVBoxLayout() layout.addWidget(self.splitter) self.setLayout(layout)
def setup(self, mute_inline_plotting=None, show_plot_outline=None, auto_fit_plotting=None): """Setup the figure browser with provided settings.""" assert self.shellwidget is not None self.mute_inline_plotting = mute_inline_plotting self.show_plot_outline = show_plot_outline self.auto_fit_plotting = auto_fit_plotting if self.figviewer is not None: self.mute_inline_action.setChecked(mute_inline_plotting) self.show_plot_outline_action.setChecked(show_plot_outline) self.auto_fit_action.setChecked(auto_fit_plotting) return # Setup the figure viewer. self.figviewer = FigureViewer(background_color=self.background_color) self.figviewer.figcanvas.sig_save_fig_requested.connect( self.save_figure) self.figviewer.figcanvas.sig_clear_fig_requested.connect( self.close_figure) # Setup the thumbnail scrollbar. self.thumbnails_sb = ThumbnailScrollBar( self.figviewer, background_color=self.background_color) toolbar = self.setup_toolbar() self.setup_option_actions(mute_inline_plotting, show_plot_outline, auto_fit_plotting) # Create the layout. main_widget = QSplitter() main_widget.addWidget(self.figviewer) main_widget.addWidget(self.thumbnails_sb) main_widget.setFrameStyle(QScrollArea().frameStyle()) self.tools_layout = QHBoxLayout() for widget in toolbar: self.tools_layout.addWidget(widget) self.tools_layout.addStretch() self.setup_options_button() layout = create_plugin_layout(self.tools_layout, main_widget) self.setLayout(layout)
def __init__(self, appdata: CnaData): QWidget.__init__(self) self.appdata = appdata self.last_selected = None self.reaction_counter = 1 self.add_button = QPushButton("Add new reaction") self.add_button.setIcon(QIcon.fromTheme("list-add")) policy = QSizePolicy() policy.ShrinkFlag = True self.add_button.setSizePolicy(policy) self.reaction_list = DragableTreeWidget() self.reaction_list.setDragEnabled(True) self.reaction_list.setHeaderLabels(["Id", "Name", "Flux"]) self.reaction_list.setSortingEnabled(True) for r in self.appdata.project.cobra_py_model.reactions: self.add_reaction(r) self.reaction_mask = ReactionMask(self) self.reaction_mask.hide() self.layout = QVBoxLayout() self.layout.setContentsMargins(0, 0, 0, 0) l = QHBoxLayout() l.setAlignment(Qt.AlignRight) l.addWidget(self.add_button) self.splitter = QSplitter() self.splitter.setOrientation(Qt.Vertical) self.splitter.addWidget(self.reaction_list) self.splitter.addWidget(self.reaction_mask) self.layout.addItem(l) self.layout.addWidget(self.splitter) self.setLayout(self.layout) self.reaction_list.currentItemChanged.connect(self.reaction_selected) self.reaction_mask.reactionChanged.connect( self.handle_changed_reaction) self.reaction_mask.reactionDeleted.connect( self.handle_deleted_reaction) self.reaction_mask.jumpToMap.connect(self.emit_jump_to_map) self.reaction_mask.jumpToMetabolite.connect( self.emit_jump_to_metabolite) self.add_button.clicked.connect(self.add_new_reaction)
def __init__(self, *args, **kwargs): super(SplitHorizontal, self).__init__(*args, **kwargs) self.splitter = QSplitter(Qt.Vertical) self.splitter.setSizes([100, 200]) self.layout.addWidget(self.splitter) self.setLayout(self.layout) QApplication.setStyle(QStyleFactory.create('Cleanlooks')) self.setGeometry(300, 300, 300, 200) self.max_canvases = 2 # Set attrs for when the buttons are created self.icon = QIcon(path('icons/1x1hor.png')) self.tool_tip = "Horizontal Split View" self.whats_this = "Displays up to two visualized data items in a horizontal layout."
def setup(self, mute_inline_plotting=None, show_plot_outline=None, auto_fit_plotting=None): """Setup the figure browser with provided settings.""" assert self.shellwidget is not None self.mute_inline_plotting = mute_inline_plotting self.show_plot_outline = show_plot_outline self.auto_fit_plotting = auto_fit_plotting if self.figviewer is not None: self.mute_inline_action.setChecked(mute_inline_plotting) self.show_plot_outline_action.setChecked(show_plot_outline) self.auto_fit_action.setChecked(auto_fit_plotting) return self.figviewer = FigureViewer(background_color=self.background_color) self.figviewer.setStyleSheet("FigureViewer{" "border: 1px solid lightgrey;" "border-top-width: 0px;" "border-bottom-width: 0px;" "border-left-width: 0px;" "}") self.thumbnails_sb = ThumbnailScrollBar( self.figviewer, background_color=self.background_color) # Option actions : self.setup_option_actions(mute_inline_plotting, show_plot_outline, auto_fit_plotting) # Create the layout : main_widget = QSplitter() main_widget.addWidget(self.figviewer) main_widget.addWidget(self.thumbnails_sb) main_widget.setFrameStyle(QScrollArea().frameStyle()) self.tools_layout = QHBoxLayout() toolbar = self.setup_toolbar() for widget in toolbar: self.tools_layout.addWidget(widget) self.tools_layout.addStretch() self.setup_options_button() layout = create_plugin_layout(self.tools_layout, main_widget) self.setLayout(layout)
def __init__(self, parent, title, task): super().__init__(parent=parent) self.task = task self.setWindowTitle(title) self.stdOutputPanel = StdPlainOutputPanel(self, task.stdout_queue) self.stdInputPanel = StdInputPanel(self, task, self.stdOutputPanel) task.set_flusher(self.stdOutputPanel.flush) splitter = QSplitter(Qt.Vertical, self) splitter.addWidget(self.stdOutputPanel) splitter.addWidget(self.stdInputPanel) vbox = QVBoxLayout() self.setLayout(vbox) vbox.setContentsMargins(0, 0, 0, 0) vbox.addWidget(splitter)
def __init__(self, widget: QWidget, buttonText: str, parent=None): """ Constructs a widget that lets the passed ``widget`` keep an internal collapsed state that can be triggered when a button is clicked. Internally, when the button is clicked, a toggled signal is emitted, indicating what the collapse state has been toggled to. Additionally, this signal is connected to the collapse() slot, which will collapse the passed widget if another widget has been added via addWidget(). The widget added via addWidget() is not collapsible. Parameters ---------- widget The widget to make collapsible. buttonText The text of the button that will be used to collapse. parent The parent widget. """ super(CollapsibleWidget, self).__init__(parent) self.widget = widget self.buttonText = buttonText self.collapsed = False toolBar = QToolBar() action = toolBar.addAction(self.buttonText, self.toggle) action.setIconText("&" + action.text()) self.collapseButton = toolBar.widgetForAction(action) self.collapseButton.setCheckable(True) self.collapseButton.setChecked(not self.collapsed) self.splitter = QSplitter(Qt.Horizontal) self.splitter.addWidget(self.widget) self.splitter.setCollapsible(0, self.collapsed) # Keep track of the collapsed widget's size to restore properly when un-collapsed self.widgetSize = self.splitter.sizes()[0] layout = QGridLayout() layout.addWidget(self.splitter, 0, 0) layout.addWidget(toolBar, 1, 0) self.setLayout(layout) self.toggled.connect(self.collapse)
def __init__(self, presenter, dims_info, can_normalise, parent=None, window_flags=Qt.Window, conf=None): super().__init__(parent) self.presenter = presenter self.setWindowFlags(window_flags) self.setAttribute(Qt.WA_DeleteOnClose, True) self._splitter = QSplitter(self) self._data_view = SliceViewerDataView(presenter, dims_info, can_normalise, self, conf) self._splitter.addWidget(self._data_view) self._splitter.splitterMoved.connect(self._data_view.on_resize) # peaks viewer off by default self._peaks_view = None # config the splitter appearance splitterStyleStr = """QSplitter::handle{ border: 1px dotted gray; min-height: 10px; max-height: 20px; }""" self._splitter.setStyleSheet(splitterStyleStr) self._splitter.setHandleWidth(1) layout = QHBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) layout.addWidget(self._splitter) self.setLayout(layout) self.refresh_queued = False # connect up additional peaks signals self.data_view.mpl_toolbar.peaksOverlayClicked.connect( self.peaks_overlay_clicked) self.data_view.mpl_toolbar.nonAlignedCutsClicked.connect( self.non_axis_aligned_cuts_clicked) self.close_signal.connect(self._run_close) self.rename_signal.connect(self._on_rename)
def setup_gfx_ui(): # design overview self.motor_display_view = QGraphicsView() self.motor_display_scene = QGraphicsScene() self.motor_display_view.setScene(self.motor_display_scene) self.motor_display_view.show() # sliced cross section self.grain_slice_view = QGraphicsView() self.grain_slice_scene = QGraphicsScene() self.grain_slice_view.setScene(self.grain_slice_scene) self.grain_slice_view.show() # splitter self.splt_gfx = QSplitter(Qt.Horizontal) self.splt_gfx.addWidget(self.motor_display_view) self.splt_gfx.addWidget(self.grain_slice_view) self.splt_gfx.setStretchFactor(0, 10) self.splt_gfx.setStretchFactor(1, 3) self.splt_gfx.setMinimumHeight(50)
def setup_page(self): width, height = 1500, 600 board = self.create_page_board() self.games_tbl = self.create_page_game() self.ranks_tbl = self.create_page_rank() splt = QSplitter(Qt.Horizontal) splt.addWidget(self.games_tbl) splt.addWidget(board) splt.addWidget(self.ranks_tbl) splt.setSizes([700, 300, 500]) #splt.setHandleWidth(10) splt.setStyleSheet( "QSplitter::handle { background-color: rgb(0, 255, 0); }") layout = QVBoxLayout() layout.addWidget(splt) self.setLayout(layout) self.resize(width, height)