def widgetImage(self): """Create main image display. """ imageArea = QHBoxLayout() scroll = QScrollArea() scroll.setAlignment(QtCore.Qt.AlignCenter) self.imageLabel = QLabel(self) scroll.setWidget(self.imageLabel) next = QPushButton(self.tr('>')) next.clicked.connect(self.nextCluster) prev = QPushButton(self.tr('<')) prev.clicked.connect(self.prevCluster) imageArea.addWidget(prev) imageArea.addWidget(scroll) imageArea.addWidget(next) vbox = QVBoxLayout() self.clusterCountLabel = QLabel(self) self.clusterCountLabel.setAlignment(QtCore.Qt.AlignCenter) f = QtGui.QFont('Arial', 14, QtGui.QFont.Bold); self.clusterCountLabel.setFont(f) vbox.addWidget(self.clusterCountLabel) vbox.addLayout(imageArea) return vbox
def __init__(self): QMainWindow.__init__(self) self.setAttribute(QtCore.Qt.WA_DeleteOnClose) self.setWindowTitle("程序主窗口") self.file_menu = QMenu('&File', self) self.file_menu.addAction('&Quit', self.fileQuit, QtCore.Qt.CTRL + QtCore.Qt.Key_Q) self.menuBar().addMenu(self.file_menu) self.help_menu = QMenu('&Help', self) self.menuBar().addSeparator() self.menuBar().addMenu(self.help_menu) self.help_menu.addAction('&About', self.about) self.main_widget = QWidget(self) l = QVBoxLayout(self.main_widget) sc = MyStaticMplCanvas(self.main_widget, width=5, height=4, dpi=100) dc = MyDynamicMplCanvas(self.main_widget, width=5, height=4, dpi=100) l.addWidget(sc) l.addWidget(dc) self.main_widget.setFocus() self.setCentralWidget(self.main_widget) # 状态条显示2秒 self.statusBar().showMessage("matplotlib 万岁!", 2000)
def add_to_layout(layout, *items): """Add items to QVBox and QHBox layouts easily. Keyword arguments: layout -- a layout oject (QVBoxLayout or QHBoxLayout) or a string if "v" or "h" create a QVBox or QHBox respectively *items -- list with items to be added """ if isinstance(layout, str): if layout == "v": layout = QVBoxLayout() elif layout == "h": layout = QHBoxLayout() else: raise TypeError("Invalid layout!") for item in items: if isinstance(item, QWidget): layout.addWidget(item) elif isinstance(item, QLayout): layout.addLayout(item) elif isinstance(item, QSpacerItem): layout.addItem(item) elif item is None: layout.addStretch() else: raise TypeError("Argument of wrong type!") return layout
class Bool(SimpleBlackbox): author = "DrLuke" name = "Bool" modulename = "drluke.builtin.bool" Category = ["Builtin"] placeable = True implementation = BoolImplementation def __init__(self, *args, **kwargs): super(Bool, self).__init__(*args, **kwargs) self.propertiesWidget = QWidget() self.vlayout = QVBoxLayout() self.toggle = QCheckBox("Output") self.toggle.toggled.connect(self.toggleTrueFalse) self.vlayout.addWidget(self.toggle) self.vlayout.addItem(QSpacerItem(40, 20, QSizePolicy.Minimum, QSizePolicy.Expanding)) self.propertiesWidget.setLayout(self.vlayout) def toggleTrueFalse(self, bool): self.sendDataToImplementations(bool) def getPropertiesWidget(self): return self.propertiesWidget def defineIO(self): self.addOutput(bool, "boolout", "Bool out")
def __init__(self, parent=None): super(ToolOffsetDialog, self).__init__(parent) self._color = QColor(0, 0, 0, 150) self._state = False self.setWindowModality(Qt.ApplicationModal) self.setWindowFlags(self.windowFlags() | Qt.Tool | Qt.Dialog | Qt.WindowStaysOnTopHint | Qt.WindowSystemMenuHint) self.setMinimumSize(200, 200) buttonBox = QDialogButtonBox() buttonBox.setEnabled(False) STATUS.connect('not-all-homed', lambda w, axis: buttonBox.setEnabled(False)) STATUS.connect('all-homed', lambda w: buttonBox.setEnabled(True)) STATUS.connect('state-estop', lambda w: buttonBox.setEnabled(False)) STATUS.connect('state-estop-reset', lambda w: buttonBox.setEnabled(STATUS.machine_is_on() and STATUS.is_all_homed())) for i in('X', 'Y', 'Z'): b = 'button_%s' % i self[b] = QPushButton('Zero %s' % i) self[b].clicked.connect(self.zeroPress('%s' % i)) buttonBox.addButton(self[b], 3) v = QVBoxLayout() h = QHBoxLayout() self._o = TOOLVIEW_WIDGET() self._o._hal_init() self.setLayout(v) v.addWidget(self._o) b = QPushButton('OK') b.clicked.connect(lambda: self.close()) h.addWidget(b) h.addWidget(buttonBox) v.addLayout(h) self.setModal(True)
def show_info_dialog( caption, parent, initial_text ): dialog = QDialog( parent ) dialog.setWindowTitle( caption ) # Create OK and Cancel buttons in a horizontal box. ok_button = QPushButton("OK") ok_button.setDefault(True) ok_button.clicked.connect(dialog.accept) cancel_button = QPushButton("Cancel") cancel_button.setDefault(False) cancel_button.clicked.connect(dialog.reject) hbox = QHBoxLayout() hbox.addWidget(cancel_button,0) hbox.addStretch() hbox.addWidget(ok_button,0) # Lay out a Plain Text Edit above the buttons. vbox = QVBoxLayout() pt_editor = QPlainTextEdit() pt_editor.document().setPlainText( initial_text ) vbox.addWidget(pt_editor,1) vbox.addLayout(hbox,0) dialog.setLayout(vbox) result = dialog.exec_() if result : return pt_editor.document().toPlainText() else : return None
class LayerListDialog(QDialog): def __init__(self, parent): QDialog.__init__(self, parent) # add a button box self.layout = QVBoxLayout() self.layer_list = LayerListWidget(self) self.button_box = QDialogButtonBox(self) self.button_box.setOrientation(Qt.Horizontal) self.button_box.setStandardButtons(QDialogButtonBox.Cancel | QDialogButtonBox.Ok) self.button_box.accepted.connect(self.accept) self.button_box.rejected.connect(self.reject) self.layout.addWidget(self.layer_list) self.layout.addWidget(self.button_box) self.setLayout(self.layout) def set_labeling_model(self, model): self.layer_list.set_model(model) def exec_(self): self.layer_list.update_from_layers() return QDialog.exec_(self) def accept(self): # update layers self.layer_list.update_labeling_from_list() QDialog.accept(self)
def setup(self, theme, api=None): """ Sets up the window. Defines the various attributes of the window and defines how the user interface is laid out. """ self.theme = theme self.api = api if api else [] # Give the window a default icon, title and minimum size. self.setWindowIcon(load_icon(self.icon)) self.update_title() self.setMinimumSize(926, 600) self.widget = QWidget() self.splitter = QSplitter(Qt.Vertical) widget_layout = QVBoxLayout() self.widget.setLayout(widget_layout) self.button_bar = ButtonBar(self.widget) widget_layout.addWidget(self.button_bar) widget_layout.addWidget(self.splitter) self.tabs = FileTabs() self.splitter.addWidget(self.tabs) self.addWidget(self.widget) self.setCurrentWidget(self.widget) self.set_theme(theme) self.show() self.autosize_window()
class NavigationBar(QWidget): itemName = ['A', 'B', 'C', 'D', 'E'] def __init__(self, parent): super().__init__(parent) self.initUI() def initUI(self): self.setObjectName("naviBar") sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(1) sizePolicy.setHeightForWidth(self.sizePolicy().hasHeightForWidth()) self.setSizePolicy(sizePolicy) self.vboxList = QVBoxLayout(self) self.vboxList.setContentsMargins(0, 0, 0, 0) self.vboxList.setSpacing(6) self.initBtnList(self.vboxList) def initBtnList(self, vBox): for name in self.itemName: btn = QPushButton(name, self) vBox.addWidget(btn)
class GalleryDownloaderUrlExtracter(QWidget): url_emit = pyqtSignal(str) def __init__(self, parent=None): super().__init__(parent, flags=Qt.Window|Qt.WindowStaysOnTopHint) self.main_layout = QVBoxLayout(self) self.text_area = QPlainTextEdit(self) self.text_area.setPlaceholderText("URLs are seperated by a newline") self.main_layout.addWidget(self.text_area) self.text_area.setWordWrapMode(QTextOption.NoWrap) add_to_queue = QPushButton('Add to queue') add_to_queue.adjustSize() add_to_queue.setFixedWidth(add_to_queue.width()) add_to_queue.clicked.connect(self.add_to_queue) self.main_layout.addWidget(add_to_queue, 0, Qt.AlignRight) self.setWindowIcon(QIcon(app_constants.APP_ICO_PATH)) self.show() def add_to_queue(self): txt = self.text_area.document().toPlainText() urls = txt.split('\n') for u in urls: if u: self.url_emit.emit(u) self.close()
def __init__(self, *args): super().__init__(BrickletTemperatureV2, *args) self.tem = self.device self.cbe_temperature = CallbackEmulator(self.tem.get_temperature, None, self.cb_temperature, self.increase_error_count) self.current_temperature = CurveValueWrapper() # float, °C plots_temperature = [('Temperature', Qt.red, self.current_temperature, '{} °C'.format)] self.plot_widget_temperature = PlotWidget('Temperature [°C]', plots_temperature, y_resolution=0.01) self.enable_heater = QCheckBox("Enable Heater") self.enable_heater.stateChanged.connect(self.enable_heater_changed) layout_plot = QHBoxLayout() layout_plot.addWidget(self.plot_widget_temperature) layout_config = QHBoxLayout() layout_config.addStretch() layout_config.addWidget(self.enable_heater) layout_config.addStretch() layout_main = QVBoxLayout(self) layout_main.addLayout(layout_plot) layout_main.addLayout(layout_config)
def virtual_keyboard(self, i, pw): i = i % 3 if i == 0: chars = 'abcdefghijklmnopqrstuvwxyz ' elif i == 1: chars = 'ABCDEFGHIJKLMNOPQRTSUVWXYZ ' elif i == 2: chars = '1234567890!?.,;:/%&()[]{}+-' n = len(chars) s = [] for i in range(n): while True: k = random.randint(0, n - 1) if k not in s: s.append(k) break def add_target(t): return lambda: pw.setText(str(pw.text()) + t) vbox = QVBoxLayout() grid = QGridLayout() grid.setSpacing(2) for i in range(n): l_button = QPushButton(chars[s[i]]) l_button.setFixedWidth(25) l_button.setFixedHeight(25) l_button.clicked.connect(add_target(chars[s[i]])) grid.addWidget(l_button, i // 6, i % 6) vbox.addLayout(grid) return vbox
def setup(self, theme): """ Sets up the window. Defines the various attributes of the window and defines how the user interface is laid out. """ self.theme = theme # Give the window a default icon, title and minimum size. self.setWindowIcon(load_icon(self.icon)) self.update_title() self.setMinimumSize(800, 600) self.widget = QWidget() self.splitter = QSplitter(Qt.Vertical) widget_layout = QVBoxLayout() self.widget.setLayout(widget_layout) self.button_bar = ButtonBar(self.widget) self.tabs = QTabWidget() self.tabs.setTabsClosable(True) self.tabs.tabCloseRequested.connect(self.tabs.removeTab) widget_layout.addWidget(self.button_bar) widget_layout.addWidget(self.splitter) self.splitter.addWidget(self.tabs) self.addWidget(self.widget) self.setCurrentWidget(self.widget) self.set_theme(theme) self.show() self.autosize_window()
def btnModifyTableStruct_Clicked(self,event): self.dlg=QDialog(self) self.dlg.setWindowTitle(self.CurrentTable+'表结构修改:') self.dlg.setWindowFlags(Qt.Window| Qt.MSWindowsFixedSizeDialogHint ) #lay lay=QVBoxLayout() self.dlgMake_AddColumn(lay) self.dlgMake_RenameColumn(lay) self.dlgMake_ModifyColumnType(lay) self.dlgMake_ModifyColumnConstraint(lay) #layLists layLists=QHBoxLayout() lay.addLayout(layLists) self.dlgMake_DeleteColumn(layLists) self.dlgMake_OrderColumns(layLists) ##layBtns layBtns=QHBoxLayout() lay.addLayout(layBtns) ##btnOk btnOk=QPushButton('提交修改') btnOk.clicked.connect(self.btnOk_Clicked) layBtns.addWidget(btnOk) ##btnCancel btnCancel=QPushButton('放弃修改') btnCancel.clicked.connect(self.btnCancel_Clicked) layBtns.addWidget(btnCancel) self.dlg.setLayout(lay) self.dlg.open()
def dlgMake_OrderColumns(self,lay=None): if lay is None: self.dlg=QDialog(self) self.dlg.setWindowTitle('调整列顺序:') else: ##self.grpAdjustColumnOrder self.grpAdjustColumnOrder=QGroupBox('调整列顺序:') self.grpAdjustColumnOrder.setCheckable(True) self.grpAdjustColumnOrder.setChecked(False) lay.addWidget(self.grpAdjustColumnOrder) ###layAdjustColumnOrder layAdjustColumnOrder=QVBoxLayout() if lay is None: self.dlg.setLayout(layAdjustColumnOrder) else: self.grpAdjustColumnOrder.setLayout(layAdjustColumnOrder) ####lblAdjustColumnOrder lblAdjustColumnOrder=QLabel('请调整列顺序:') layAdjustColumnOrder.addWidget(lblAdjustColumnOrder) ####self.lstAdjustColumnOrder self.lstAdjustColumnOrder=QListWidget() self.lstAdjustColumnOrder.addItems(self.columnsName) self.lstAdjustColumnOrder.setFixedWidth(150) layAdjustColumnOrder.addWidget(self.lstAdjustColumnOrder) if lay is None: self.dlg.setFixedWidth(175) self.dlg.show()
def __init__(self, parent=None): super(MeasurementsWidget, self).__init__(parent) self.offset = 0 self.limit = PaginatorTableWidget.PAGE_ROW_COUNT self._filter = {} self.filtering = FilteringWidget() self.filtering.filterChanged.connect(self.on_filterChanged) self.table = PaginatorTableWidget() self.table.layout().setContentsMargins(0, 0, 0, 0) self.table.setPageRowCount(self.limit) self.table.requestData.connect(self.on_table_requestData) self.table.setColumnHeaders(['Datum a čas', 'Hodnota 1', 'Hodnota 2', 'Rozdíl hodnot', 'Přístroj', 'Odchylka']) header = self.table.table.horizontalHeader() header.resizeSection(0, 190) header.resizeSection(1, 110) header.resizeSection(2, 110) header.resizeSection(3, 110) header.resizeSection(4, 160) layout = QVBoxLayout() layout.addWidget(self.filtering) layout.addWidget(self.table) self.setLayout(layout)
def __init__(self, parent=None): super(ResultHandler, self).__init__() self.setWindowTitle('Dash results') self.control_label = QLabel() self.rendered_label = QLabel() self.diff_label = QLabel() self.mask_label = QLabel() self.new_mask_label = QLabel() self.scrollArea = QScrollArea() self.widget = QWidget() self.test_name_label = QLabel() grid = QGridLayout() grid.addWidget(self.test_name_label, 0, 0) grid.addWidget(QLabel('Control'), 1, 0) grid.addWidget(QLabel('Rendered'), 1, 1) grid.addWidget(QLabel('Difference'), 1, 2) grid.addWidget(self.control_label, 2, 0) grid.addWidget(self.rendered_label, 2, 1) grid.addWidget(self.diff_label, 2, 2) grid.addWidget(QLabel('Current Mask'), 3, 0) grid.addWidget(QLabel('New Mask'), 3, 1) grid.addWidget(self.mask_label, 4, 0) grid.addWidget(self.new_mask_label, 4, 1) self.widget.setLayout(grid) self.scrollArea.setWidget(self.widget) v_layout = QVBoxLayout() v_layout.addWidget(self.scrollArea, 1) next_image_button = QPushButton() next_image_button.setText('Skip') next_image_button.pressed.connect(self.load_next) self.overload_spin = QDoubleSpinBox() self.overload_spin.setMinimum(1) self.overload_spin.setMaximum(255) self.overload_spin.setValue(1) self.overload_spin.valueChanged.connect(lambda: save_mask_button.setEnabled(False)) preview_mask_button = QPushButton() preview_mask_button.setText('Preview New Mask') preview_mask_button.pressed.connect(self.preview_mask) preview_mask_button.pressed.connect(lambda: save_mask_button.setEnabled(True)) save_mask_button = QPushButton() save_mask_button.setText('Save New Mask') save_mask_button.pressed.connect(self.save_mask) button_layout = QHBoxLayout() button_layout.addWidget(next_image_button) button_layout.addWidget(QLabel('Mask diff multiplier:')) button_layout.addWidget(self.overload_spin) button_layout.addWidget(preview_mask_button) button_layout.addWidget(save_mask_button) button_layout.addStretch() v_layout.addLayout(button_layout) self.setLayout(v_layout)
def createTreeView(self): dockWidget = QDockWidget() dockWidget.setAllowedAreas(Qt.LeftDockWidgetArea) dockWidget.setFeatures(QDockWidget.NoDockWidgetFeatures) dockWidget.setTitleBarWidget(QWidget()) self.treeView = QTreeView() self.treeView.clicked.connect(self.treeItemClicked) self.treeModel = TreeModel() self.treeView.setModel(self.treeModel) self.logo = QLabel() logoPixmap = QPixmap(CMAKE_INSTALL_PREFIX + '/share/jderobot/resources/jderobot.png') self.logo.setPixmap(logoPixmap) self.upButton = QPushButton() self.upButton.setText('Up') self.upButton.clicked.connect(self.upButtonClicked) leftContainer = QWidget() leftLayout = QVBoxLayout() leftLayout.addWidget(self.treeView) leftLayout.addWidget(self.upButton) leftLayout.addWidget(self.logo) leftContainer.setLayout(leftLayout) dockWidget.setWidget(leftContainer) self.addDockWidget(Qt.LeftDockWidgetArea, dockWidget)
def __init__(self, citylist, accurate_url, appid, parent=None): super(CityListDlg, self).__init__(parent) self.citylist = citylist self.accurate_url = accurate_url self.appid = appid self.listWidget = QListWidget() self.listWidget.addItems(self.citylist) buttonLayout = QVBoxLayout() self.buttonBox = QDialogButtonBox() self.buttonBox.setOrientation(Qt.Horizontal) self.buttonBox.setStandardButtons(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) self.buttonBox.rejected.connect(self.reject) self.buttonBox.accepted.connect(self.accept) layoutT = QVBoxLayout() layout = QHBoxLayout() layout.addWidget(self.listWidget) layout.addLayout(buttonLayout) for text, slot in ((self.tr("&Add..."), self.add), (self.tr("&Remove..."), self.remove), (self.tr("&Up"), self.up), (self.tr("&Down"), self.down), (self.tr("De&fault"), self.default), (self.tr("&Sort"), self.listWidget.sortItems)): button = QPushButton(text) buttonLayout.addWidget(button) button.clicked.connect(slot) buttonLayout.addWidget(self.buttonBox) self.status = QLabel() layoutT.addLayout(layout) layoutT.addWidget(self.status) self.setLayout(layoutT) self.checklength()
def __init__(self, opPixelClassification, parent): super( QDialog, self ).__init__(parent=parent) self._op = opPixelClassification classifier_listwidget = QListWidget(parent=self) classifier_listwidget.setSelectionMode( QListWidget.SingleSelection ) classifier_factories = self._get_available_classifier_factories() for name, classifier_factory in list(classifier_factories.items()): item = QListWidgetItem( name ) item.setData( Qt.UserRole, classifier_factory ) classifier_listwidget.addItem(item) buttonbox = QDialogButtonBox( Qt.Horizontal, parent=self ) buttonbox.setStandardButtons( QDialogButtonBox.Ok | QDialogButtonBox.Cancel ) buttonbox.accepted.connect( self.accept ) buttonbox.rejected.connect( self.reject ) layout = QVBoxLayout() layout.addWidget( classifier_listwidget ) layout.addWidget( buttonbox ) self.setLayout(layout) self.setWindowTitle( "Select Classifier Type" ) # Save members self._classifier_listwidget = classifier_listwidget
class dailyTab(QWidget): def __init__(self): super().__init__() # Виджет для дейлков # Содержит содержит главный таб виджет для дейликов self.tab = QTabWidget() self.vbox = QVBoxLayout() self.vbox.addWidget(self.tab) self.setLayout(self.vbox) self.threads = [] # При ините создаём тред для получения дейликов self.loadDataThread = loadDataThread(r'https://api.guildwars2.com/v2/achievements/daily') self.loadDataThread.signal.connect(self.getEvent, Qt.QueuedConnection) self.loadDataThread.start() def getEvent(self, signal): signal = json.loads(signal) for metaEvent in signal.keys(): setattr(self,metaEvent,frame()) self.tab.addTab(getattr(self,metaEvent),metaEvent) for event in signal[metaEvent]: if (event['level']['max'] == 80 and metaEvent == 'pve') or metaEvent != 'pve': getattr(self,metaEvent).getEvent(event) def addTab(self, event, metaEvent): getattr(self,'{}Tab'.format(metaEvent)).addEvent(event) self.resize(self.grid.sizeHint())
class frame(QWidget): def __init__(self): super().__init__() self.vbox = QVBoxLayout() self.setLayout(self.vbox) self.threads = [] def getEvent(self, event): self.threads.append(loadDataThread(r'https://api.guildwars2.com/v2/achievements?id='+str(event['id']))) self.threads[-1].signal.connect(self.addEvent, Qt.QueuedConnection) self.threads[-1].start() def addEvent(self, signal): signal = json.loads(signal) print(type(signal)) setattr(self,str(signal['id']),label(signal)) getattr(self,str(signal['id'])).setText(signal['name']) getattr(self, str(signal['id'])).signal.connect(self.setEventWindow) self.vbox.addWidget(getattr(self,str(signal['id']))) # self.resize(self.grid.sizeHint()) def setEventWindow(self, event): self.eventWindow = eventWindow(event) self.eventWindow.show()
def main(args): app = QApplication([]) main_frame = QFrame() layout = QVBoxLayout(main_frame) number_edit = PyQtExtras.NumberEdit() number_edit.set_value(10) print "Current value of 1 is: " + str(number_edit.get_value()) number_edit2 = PyQtExtras.NumberEdit(max_length=2) number_edit2.set_value(2) print "Current value of 2 is: " + str(number_edit2.get_value()) number_edit2.set_value(20) print "Current value of 2 is: " + str(number_edit2.get_value()) number_edit3 = PyQtExtras.NumberEdit(max_length=1) number_edit3.set_value(2) print "Current value of 3 is: " + str(number_edit3.get_value()) number_edit3.set_value(50) print "Current values of 3 is: " + str(number_edit3.get_value()) number_edit3.set_value(25) print "Current value of 3 is: " + str(number_edit3.get_value()) number_edit3.set_value("text") print "Current value of 3 is: " + str(number_edit3.get_value()) layout.addWidget(number_edit) layout.addWidget(number_edit2) layout.addWidget(number_edit3) main_frame.show() app.exec_()
def __init__(self, page, parent=None): super(HelpForm, self).__init__(parent) self.setAttribute(Qt.WA_DeleteOnClose) self.setWindowModality(Qt.WindowModal) # actions backAction = QAction(QIcon(":/back.png"), "&Back", self) backAction.setShortcut(QKeySequence.Back) homeAction = QAction(QIcon(":/home.png"), "&Home", self) homeAction.setShortcut("Home") self.pageLabel = QLabel() #toolbar toolBar = QToolBar() toolBar.addAction(backAction) toolBar.addAction(homeAction) toolBar.addWidget(self.pageLabel) self.textBrowser = QTextBrowser() # layout layout = QVBoxLayout() layout.addWidget(toolBar) layout.addWidget(self.textBrowser, 1) self.setLayout(layout) # signals and slots backAction.triggered.connect(self.textBrowser.backward) homeAction.triggered.connect(self.textBrowser.home) self.textBrowser.sourceChanged.connect(self.updatePageTitle) self.textBrowser.setSearchPaths([":/help"]) self.textBrowser.setSource(QUrl(page)) self.resize(400, 600) self.setWindowTitle("{0} Help".format( QApplication.applicationName()))
class LeftPanel(FFrame): def __init__(self, app, parent=None): super().__init__(parent) self._app = app self.library_panel = LP_LibraryPanel(self._app) self.playlists_panel = LP_PlaylistsPanel(self._app) self._layout = QVBoxLayout(self) self.setLayout(self._layout) self.setObjectName('c_left_panel') self.set_theme_style() self.setup_ui() def set_theme_style(self): theme = self._app.theme_manager.current_theme style_str = ''' #{0} {{ background: transparent; }} '''.format(self.objectName(), theme.color5.name()) self.setStyleSheet(style_str) def setup_ui(self): self._layout.setContentsMargins(0, 0, 0, 0) self._layout.setSpacing(0) self._layout.addWidget(self.library_panel) self._layout.addWidget(self.playlists_panel) self._layout.addStretch(1)
class RightPanel_Container(FScrollArea): def __init__(self, app, parent=None): super().__init__(parent) self._app = app self.right_panel = RightPanel(self._app) self._layout = QVBoxLayout(self) self.setWidget(self.right_panel) self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.setWidgetResizable(True) self.setObjectName('c_left_panel') self.set_theme_style() self.setup_ui() def set_theme_style(self): theme = self._app.theme_manager.current_theme style_str = ''' #{0} {{ background: transparent; border: 0px; }} '''.format(self.objectName(), theme.color5.name()) self.setStyleSheet(style_str) def setup_ui(self): self._layout.setContentsMargins(0, 0, 0, 0) self._layout.setSpacing(0)
def init(self): vbox = QVBoxLayout() self.setLayout(vbox) text = QLineEdit('0.') text.setReadOnly(True) vbox.addWidget(text) grid = QGridLayout() vbox.addLayout(grid) names = ['Exit', 'AC', 'DEL', '+/-', '7', '8', '9', '/', '4', '5', '6', '*', '1', '2', '3', '-', '0', '.', '=', '+'] positions = [(i, j) for i in range(5) for j in range(4)] for position, name in zip(positions, names): btn = QPushButton(name) grid.addWidget(btn, *position) self.move(300, 200) self.setWindowTitle('Calculator') self.show()
def _createPlotWidget(self): self._plotWidget = QWidget() self._plotFigure = Figure() self._plotCanvas = FigureCanvas(self._plotFigure) self._plotCanvas.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) self._plotCanvas.updateGeometry() self._plotCanvas.setParent(self._plotWidget) self._plotCanvas.mpl_connect('scroll_event', self._onScroll) self._plotFigure.set_canvas(self._plotCanvas) # Vm and command voltage go in the same subplot self._vm_axes = self._plotFigure.add_subplot(2,2,1, title='Membrane potential') self._vm_axes.set_ylim(-20.0, 120.0) # Channel conductances go to the same subplot self._g_axes = self._plotFigure.add_subplot(2,2,2, title='Channel conductance') self._g_axes.set_ylim(0.0, 0.5) # Injection current for Vclamp/Iclamp go to the same subplot self._im_axes = self._plotFigure.add_subplot(2,2,3, title='Injection current') self._im_axes.set_ylim(-0.5, 0.5) # Channel currents go to the same subplot self._i_axes = self._plotFigure.add_subplot(2,2,4, title='Channel current') self._i_axes.set_ylim(-10, 10) for axis in self._plotFigure.axes: axis.set_autoscale_on(False) layout = QVBoxLayout() layout.addWidget(self._plotCanvas) self._plotNavigator = NavigationToolbar(self._plotCanvas, self._plotWidget) layout.addWidget(self._plotNavigator) self._plotWidget.setLayout(layout)
class ScrollAreaWidget(QWidget): def __init__(self, parent=None): super().__init__(parent) self.parent = parent #Container Widget widget = QWidget() #Layout of Container Widget self.layout = QVBoxLayout(self) widget.setLayout(self.layout) #Scroll Area Properties self.scroll = QScrollArea() self.scroll.setWidgetResizable(False) self.scroll.setWidget(widget) #Scroll Area Layer add scroll_layout = QVBoxLayout(self) scroll_layout.addWidget(self.scroll) self.setLayout(scroll_layout) def add_widget_item(self, widget_item): self.layout.addWidget(widget_item) widget_item.show() widget = QWidget() widget.setLayout(self.layout) self.scroll.setWidget(widget)
def message_dialog(self, msg): self.clear_dialog() self.dialog = dialog = WindowModalDialog(self.top_level_window(), _("Coldcard Status")) l = QLabel(msg) vbox = QVBoxLayout(dialog) vbox.addWidget(l) dialog.show()
def index_Button(self): self.index_start = QPushButton('START', self) self.index_start.clicked.connect(self.start) self.index_start.setFont(QFont('Castellar', 26)) self.index_quit = QPushButton('QUIT', self) self.index_quit.clicked.connect(QCoreApplication.instance().quit) self.index_quit.setFont(QFont('Castellar', 26)) hbox = QVBoxLayout() hbox.addStretch(1) hbox.addWidget(self.index_start) hbox.addStretch(1) hbox.addWidget(self.index_quit) hbox.addStretch(1) vbox = QHBoxLayout() vbox.addStretch(1) vbox.addLayout(hbox) vbox.addStretch(1) self.setLayout(vbox)
def __init__(self, parent=None): super().__init__(parent) self.setSubTitle(self.tr("<h2>Congratulations!</h2>")) self.homepage_url = "http://www.pisilinux.org" self.forum_url = "http://forum.pisilinux.org" self.wiki_url = "http://wiki.pisilinux.org" vlayout = QVBoxLayout(self) label = QLabel(self) label.setWordWrap(True) label.setText( self. tr("<p><strong>Your settings have been applied.</strong> Now you can start enjoying Pisi Linux \ or you can and support. Don't forget to <strong>join our community!<strong></p>" )) vlayout.addWidget(label) vlayout.addItem( QSpacerItem(20, 40, QSizePolicy.Preferred, QSizePolicy.Preferred)) groupBox1 = QGroupBox() groupBox1.setTitle(self.tr("System Settings")) groupBox1.setMinimumHeight(150) groupHLayout1 = QHBoxLayout(groupBox1) groupLabelImage = QLabel() groupLabelImage.setPixmap( QIcon.fromTheme("preferences-system").pixmap(64, 64)) groupLabelImage.setMaximumSize(64, 64) groupHLayout1.addWidget(groupLabelImage) groupLabel1 = QLabel() groupLabel1.setWordWrap(True) groupLabel1.setText( self. tr("<p>Configuration tools for Pisi Linux such as the display, firewall, keyboard, user manager...</p>" )) groupButton1 = QPushButton() groupButton1.setMaximumWidth(200) groupButton1.setText(self.tr("System Settings")) groupHLayout1.addWidget(groupLabel1) groupHLayout1.addItem( QSpacerItem(40, 20, QSizePolicy.Preferred, QSizePolicy.Preferred)) groupHLayout1.addWidget(groupButton1) vlayout.addWidget(groupBox1) vlayout.addItem( QSpacerItem(20, 40, QSizePolicy.Preferred, QSizePolicy.Preferred)) groupBox2 = QGroupBox() groupBox2.setTitle(self.tr("Help and Support")) groupBox2.setMinimumHeight(150) groupHLayout2 = QHBoxLayout(groupBox2) groupLabelImage2 = QLabel() groupLabelImage2.setPixmap( QIcon.fromTheme("system-help").pixmap(64, 64)) groupHLayout2.addWidget(groupLabelImage2) groupLabelImage2.setMaximumSize(64, 64) groupLabel2 = QLabel() groupLabel2.setWordWrap(True) groupLabel2.setText( self. tr("<p>Pisi Linux community, mailing lists, chat rooms, Wiki documents, help and support pages...</p>" )) groupButton2 = QPushButton() groupButton2.setMaximumWidth(200) groupButton2.setText(self.tr("Help and Support")) groupHLayout2.addWidget(groupLabel2) groupHLayout2.addItem( QSpacerItem(40, 20, QSizePolicy.Preferred, QSizePolicy.Preferred)) groupHLayout2.addWidget(groupButton2) vlayout.addWidget(groupBox2) vlayout.addItem( QSpacerItem(20, 40, QSizePolicy.Preferred, QSizePolicy.Preferred)) groupButton2.clicked.connect(self.helpPagesOpen) groupButton1.clicked.connect(self.systemSettingsOpen)
def __init__(self): QWidget.__init__(self, None) self.setMinimumSize(600, 400) # Create two labels and a button self.vertLabel = QLabel("Vertex code", self) self.fragLabel = QLabel("Fragment code", self) self.theButton = QPushButton("Compile!", self) self.theButton.clicked.connect(self.on_compile) # Create two editors self.vertEdit = TextField(self) self.vertEdit.setPlainText(VERT_CODE) self.fragEdit = TextField(self) self.fragEdit.setPlainText(FRAG_CODE) # Create a canvas self.canvas = Canvas(parent=self) # Layout hlayout = QHBoxLayout(self) self.setLayout(hlayout) vlayout = QVBoxLayout() # hlayout.addLayout(vlayout, 1) hlayout.addWidget(self.canvas.native, 1) # vlayout.addWidget(self.vertLabel, 0) vlayout.addWidget(self.vertEdit, 1) vlayout.addWidget(self.fragLabel, 0) vlayout.addWidget(self.fragEdit, 1) vlayout.addWidget(self.theButton, 0) self.show()
def __init__(self): super().__init__() self.setWindowTitle("Linha") self.setGeometry(300, 300, 200, 100) layout = QVBoxLayout() self.coordenadaX1 = QLineEdit() self.coordenadaY1 = QLineEdit() self.coordenadaX2 = QLineEdit() self.coordenadaY2 = QLineEdit() self.colorLine = QLineEdit() layout.addWidget(QLabel('Coordenada X1:')) layout.addWidget(self.coordenadaX1) layout.addWidget(QLabel('Coordenada Y1:')) layout.addWidget(self.coordenadaY1) layout.addWidget(QLabel('Coordenada X2:')) layout.addWidget(self.coordenadaX2) layout.addWidget(QLabel('Coordenada Y2:')) layout.addWidget(self.coordenadaY2) layout.addWidget(QLabel('Color: r,g,b (between 0 and 255)')) layout.addWidget(self.colorLine) self.Confirma = QPushButton('Confirmar') self.Confirma.setStyleSheet('font-size: 30px') layout.addWidget(self.Confirma) self.Confirma.clicked.connect(self.printXeY) self.setLayout(layout) self.limpar = QPushButton('Limpar') self.limpar.setStyleSheet('font-size: 15px') layout.addWidget(self.limpar) self.limpar.clicked.connect(self.clearLabels) self.setLayout(layout)
def setupUi(self, PropDetailsDlg): PropDetailsDlg.setModal(True) layout = QVBoxLayout(PropDetailsDlg) layout.setContentsMargins(10, 15, 10, 10) name = QLabel("<b><i>%s</i></b>" % PropDetailsDlg.data.name) name.setAlignment(Qt.AlignCenter) layout.addWidget(name) body = QFormLayout() body.setLabelAlignment(Qt.AlignRight) body.setVerticalSpacing(20) body.setContentsMargins(25, 10, 25, 30) link = "<a href='%s'>%s</a>" % (PropDetailsDlg.data.URL, PropDetailsDlg.data.URL) link_label = QLabel(link) link_label.setOpenExternalLinks(True) body.addRow(QLabel("<b>URL: </b>"), link_label) body.addRow(QLabel("<b>TotalPayment: </b>"), QLabel(str(PropDetailsDlg.data.ToalPayment))) body.addRow(QLabel("<b>MonthlyPayment: </b>"), QLabel(str(PropDetailsDlg.data.MonthlyPayment))) hashLabel = self.selectable_line(PropDetailsDlg.data.Hash) body.addRow(QLabel("<b>Hash: </b>"), hashLabel) feeHashLabel = self.selectable_line(PropDetailsDlg.data.FeeHash) body.addRow(QLabel("<b>FeeHash: </b>"), feeHashLabel) body.addRow(QLabel("<b>BlockStart: </b>"), QLabel(str(PropDetailsDlg.data.BlockStart))) body.addRow(QLabel("<b>BlockEnd: </b>"), QLabel(str(PropDetailsDlg.data.BlockEnd))) body.addRow(QLabel("<b>TotalPayCount: </b>"), QLabel(str(PropDetailsDlg.data.TotalPayCount))) body.addRow(QLabel("<b>RemainingPayCount: </b>"), QLabel(str(PropDetailsDlg.data.RemainingPayCount))) addyLabel = self.selectable_line(PropDetailsDlg.data.PaymentAddress) body.addRow(QLabel("<b>PaymentAddress: </b>"), addyLabel) votes = "<span style='color: green'>%d YEAS</span> / " % PropDetailsDlg.data.Yeas votes += "<span style='color: orange'>%d ABSTAINS</span> / " % PropDetailsDlg.data.Abstains votes += "<span style='color: red'>%d NAYS</span>" % PropDetailsDlg.data.Nays body.addRow(QLabel("<b>Votes: </b>"), QLabel(votes)) my_yeas = [ "%s <em style='color: green'>(%s)</em>" % (x[0], strftime('%Y-%m-%d %H:%M:%S', gmtime(x[1][1]))) for x in PropDetailsDlg.data.MyYeas ] body.addRow(QLabel("<b>My Yeas: </b>"), self.scroll(my_yeas)) my_abstains = [ "%s <em style='color: orange'>(%s)</em>" % (x[0], strftime('%Y-%m-%d %H:%M:%S', gmtime(x[1][1]))) for x in PropDetailsDlg.data.MyAbstains ] body.addRow(QLabel("<b>My Abstains: </b>"), self.scroll(my_abstains)) my_nays = [ "%s <em style='color: red'>(%s)</em>" % (x[0], strftime('%Y-%m-%d %H:%M:%S', gmtime(x[1][1]))) for x in PropDetailsDlg.data.MyNays ] body.addRow(QLabel("<b>My Nays: </b>"), self.scroll(my_nays)) layout.addLayout(body) self.okButton = QPushButton('OK') self.okButton.clicked.connect(self.accept) layout.addWidget(self.okButton) sh = layout.sizeHint() self.setFixedSize(sh)
class WaterfallPlotter(QWidget): generated_rectangles_signal = QtCore.pyqtSignal( list) #send list of rects for data display in tree def __init__(self, parent): super(WaterfallPlotter, self).__init__(parent) self.figure = plt.figure() self.canvas = FigureCanvas(self.figure) self.toolbar = NavigationToolbar(self.canvas, self) self.btn_plot = QPushButton('Default Plot') self.btn_plot.clicked.connect(self.default_plot) self.layout = QVBoxLayout() self.layout.addWidget(self.toolbar) self.layout.addWidget(self.canvas) self.layout.addWidget(self.btn_plot) self.setLayout(self.layout) def on_waterfall_data_signal(self, signal): self.waterfall_data = signal['waterfall_data'] #pandas dataframe self.btn_plot.setEnabled(True) def on_general_settings_signal(self, signal): try: hasattr(self, 'ax') self.ax.set_title(signal[0]) self.ax.set_xlabel(signal[1]) self.ax.set_ylabel(signal[2]) self.canvas.draw() except Exception as e: print(e) def default_plot(self): ''' Plot waterfall data ''' self.figure.clear() self.rect_locations = np.arange( len(self.waterfall_data['Best response percent change'])) self.ax = self.figure.add_subplot(111) self.ax.axhline(y=20, linestyle='--', c='k', alpha=0.5, lw=2.0, label='twenty_percent') self.ax.axhline(y=-30, linestyle='--', c='k', alpha=0.5, lw=2.0, label='thirty_percent') self.ax.axhline(y=0, c='k', alpha=1, lw=2.0, label='zero_percent') self.ax.grid(color='k', axis='y', alpha=0.25) self.rects = self.ax.bar( self.rect_locations, self.waterfall_data['Best response percent change'], label=self.waterfall_data['Patient number']) self.auto_label_responses(self.ax, self.rects, self.waterfall_data) #self.plot_table() self.canvas.draw() self.ax.hold(False) #rewrite the plot when plot() called self.generated_rectangles_signal.emit([self.rects]) def plot_table(self): rows = ['%s' % x for x in self.waterfall_data.keys()] rows = rows[ 4:] #skip first three, they are the 4 standard headers, rest are table rows columns = self.waterfall_data['Patient number'] #patient numbers cell_text = [] for row in rows: cell_text_temp = [] for col in range(len(columns)): cell_text_temp.append(self.waterfall_data[row][col]) cell_text.append(cell_text_temp) the_table = plt.table(cellText=cell_text, rowLabels=rows, colLabels=columns, loc='bottom', cellLoc='center') plt.subplots_adjust(bottom=0.15, left=0.5) self.ax.set_xlim(-0.5, len(columns) - 0.5) plt.tick_params( axis='x', # changes apply to the x-axis which='both', # both major and minor ticks are affected bottom='off', # ticks along the bottom edge are off top='off', # ticks along the top edge are off labelbottom='off') # labels along the bottom edge are off def update_plot(self): ''' TODO ''' pass def auto_label_responses(self, ax, rects, waterfall_data): '''Add labels above/below bars''' i = 0 for rect in rects: height = rect.get_height() if height >= 0: valign = 'bottom' else: valign = 'top' ax.text(rect.get_x() + rect.get_width() / 2., height, '%s' % waterfall_data['Overall response'][i], ha='center', va=valign) i += 1