def __init__(self,info,title="gpvdm"): QWidget.__init__(self) self.ret=False self.setWindowTitle(title) self.setWindowFlags(Qt.WindowStaysOnTopHint) self.vbox=QVBoxLayout() self.edit_boxes=[] for i in range(0,len(info)): l=QLabel(info[i][0]) self.vbox.addWidget(l) self.edit_boxes.append(QLineEdit()) self.edit_boxes[-1].setText(info[i][1]) self.vbox.addWidget(self.edit_boxes[-1]) w=QWidget() hb=QHBoxLayout() w.setLayout(hb) ok=QPushButton(_("OK")) ok.pressed.connect(self.callback_click_ok) cancel=QPushButton(_("Cancel")) cancel.pressed.connect(self.callback_click_cancel) hb.addWidget(cancel) hb.addWidget(ok) self.vbox.addWidget(w) self.setLayout(self.vbox)
def __init__(self, parent=None): super().__init__(parent) self.setSubTitle(self.tr("<h2>Select Menu Style</h2>")) texts = [ self.tr("<p>Application Menu is the default for KaOS because of its \ extremely lightweight (and fast) structure.</p>"), self.tr("<p>Application Launcher is the standard for KDE. \ Application shortcuts are arranged under a tab structure.</p>"), self.tr("<p>Application Panel is a full screen menu style. \ Application shortcuts are arranged so that you can access them quickly and easily.</p>") ] self.menus = [[":/data/images/menu-kicker.png", texts[0]], [":/data/images/menu-kickoff.png", texts[1]], [":/data/images/menu-kimpanel.png", texts[2]]] vlayout = QVBoxLayout(self) labelLayout = QHBoxLayout() iconLabel = QLabel() iconLabel.setMaximumSize(64, 64) iconLabel.setPixmap(QIcon.fromTheme("kde").pixmap(64, 64)) labelLayout.addWidget(iconLabel) label = QLabel(self) label.setText(self.tr("<p>You can also customize your <strong>KDE menu</strong> as you like. \ Please choose one from the following styles.</p>")) labelLayout.addWidget(label) vlayout.addLayout(labelLayout) vlayout.addItem(QSpacerItem(20, 40, QSizePolicy.Preferred, QSizePolicy.Preferred)) self.comboBox = QComboBox(self) self.comboBox.addItem(self.tr("Application Menu")) self.comboBox.addItem(self.tr("Application Launcher")) self.comboBox.addItem(self.tr("Application Dashboard")) vlayout.addWidget(self.comboBox) vlayout.addItem(QSpacerItem(20, 40, QSizePolicy.Preferred, QSizePolicy.Preferred)) hlayout = QHBoxLayout(self) self.labelMenu = QLabel(self) self.labelMenu.setPixmap(QPixmap(self.menus[0][0])) self.labelMenu.setMaximumSize(350 ,214) hlayout.addWidget(self.labelMenu) self.labelText = QLabel(self) self.labelText.setWordWrap(True) self.labelText.setText(self.tr(self.menus[0][1])) hlayout.addWidget(self.labelText) vlayout.addLayout(hlayout) vlayout.addItem(QSpacerItem(20, 40, QSizePolicy.Preferred, QSizePolicy.Preferred)) self.comboBox.currentIndexChanged.connect(self.menuSelect) self.menuSelected = 0
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_ui(self): path = os.getcwd() url = path + HTM_FILE self.webView.setUrl(QtCore.QUrl(url)) self.webView.page().loadFinished.connect(self.load_finished) # for test self.inputText.setEnabled(False) self.inputText.setAcceptRichText(False) self.inputText.setToolTip("每行一组经纬度,纬度lat在前\n" + "以空格、逗号或制表符分隔") self.runButton.clicked.connect(self.add_points) # show all points in input text window self.clrButton.clicked.connect(self.clr_points) buttonBox = QHBoxLayout() # button box buttonBox.addStretch() buttonBox.addWidget(self.runButton) buttonBox.addWidget(self.clrButton) rightBox = QVBoxLayout() # right box rightBox.addWidget(self.sourceType) rightBox.addWidget(self.inputText) rightBox.addLayout(buttonBox) rightBox.addWidget(self.statusBar) layout = QHBoxLayout() # main box layout.addWidget(self.webView) layout.addLayout(rightBox) self.setLayout(layout) self.setWindowTitle('经纬度地图显示') self.show()
def __init__(self, tableName, parent=None): super(TableEditor, self).__init__(parent) self.model = QSqlTableModel(self) self.model.setTable(tableName) self.model.setEditStrategy(QSqlTableModel.OnManualSubmit) self.model.select() self.model.setHeaderData(0, Qt.Horizontal, "ID") self.model.setHeaderData(1, Qt.Horizontal, "First name") self.model.setHeaderData(2, Qt.Horizontal, "Last name") view = QTableView() view.setModel(self.model) submitButton = QPushButton("Submit") submitButton.setDefault(True) revertButton = QPushButton("&Revert") quitButton = QPushButton("Quit") buttonBox = QDialogButtonBox(Qt.Vertical) buttonBox.addButton(submitButton, QDialogButtonBox.ActionRole) buttonBox.addButton(revertButton, QDialogButtonBox.ActionRole) buttonBox.addButton(quitButton, QDialogButtonBox.RejectRole) submitButton.clicked.connect(self.submit) revertButton.clicked.connect(self.model.revertAll) quitButton.clicked.connect(self.close) mainLayout = QHBoxLayout() mainLayout.addWidget(view) mainLayout.addWidget(buttonBox) self.setLayout(mainLayout) self.setWindowTitle("Cached Table")
def __init__(self, *args): super().__init__(BrickletRotaryPotiV2, *args) self.rp = self.device self.cbe_position = CallbackEmulator(self.rp.get_position, None, self.cb_position, self.increase_error_count) self.position_knob = KnobWidget(self) self.position_knob.setFocusPolicy(Qt.NoFocus) self.position_knob.set_total_angle(300) self.position_knob.set_range(-150, 150) self.position_knob.set_scale(30, 3) self.position_knob.set_knob_radius(25) self.current_position = CurveValueWrapper() plots = [('Position', Qt.red, self.current_position, str)] self.plot_widget = PlotWidget('Position', plots, update_interval=0.025, y_resolution=1.0) layout = QHBoxLayout(self) layout.addWidget(self.plot_widget) layout.addWidget(self.position_knob)
def createBottomLeftTabWidget(self): self.bottomLeftTabWidget = QTabWidget() self.bottomLeftTabWidget.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Ignored) tab1 = QWidget() tableWidget = QTableWidget(10, 10) tab1hbox = QHBoxLayout() tab1hbox.setContentsMargins(5, 5, 5, 5) tab1hbox.addWidget(tableWidget) tab1.setLayout(tab1hbox) tab2 = QWidget() textEdit = QTextEdit() textEdit.setPlainText("Twinkle, twinkle, little star,\n" "How I wonder what you are.\n" "Up above the world so high,\n" "Like a diamond in the sky.\n" "Twinkle, twinkle, little star,\n" "How I wonder what you are!\n") tab2hbox = QHBoxLayout() tab2hbox.setContentsMargins(5, 5, 5, 5) tab2hbox.addWidget(textEdit) tab2.setLayout(tab2hbox) self.bottomLeftTabWidget.addTab(tab1, "&Table") self.bottomLeftTabWidget.addTab(tab2, "Text &Edit")
class RightPanel(FFrame): def __init__(self, app, parent=None): super().__init__(parent) self._app = app self.widget = None self._layout = QHBoxLayout(self) self.setLayout(self._layout) self.setObjectName('right_panel') self.set_theme_style() self.setup_ui() def set_theme_style(self): style_str = ''' #{0} {{ background: transparent; }} '''.format(self.objectName()) self.setStyleSheet(style_str) def set_widget(self, widget): if self.widget and self.widget != widget: self._layout.removeWidget(self.widget) self.widget.hide() widget.show() self._layout.addWidget(widget) else: self._layout.addWidget(widget) self.widget = widget def setup_ui(self): self._layout.setContentsMargins(0, 0, 0, 0) self._layout.setSpacing(0)
def createChartView( self, _x2idx: dict, _idx2x: list ) -> QHBoxLayout: chart = QChart() # assign y range self.calcRangeY() self.setAxisY(self.begin_y, self.end_y) value_layout = QFormLayout() # add each series for v in self.series_table.values(): v.addSeries(_x2idx, _idx2x, chart, self.axis_x, self.axis_y) if v.show_value: value_layout.addWidget(v.show_group) # create chartview and layout for view and value chartview = ChartView(chart, self.wizard) chartview.setRenderHint(QPainter.Antialiasing) global_layout = QHBoxLayout() global_layout.addWidget(chartview, self.chart_stretch) global_layout.addLayout(value_layout) return global_layout
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 __init__(self, win): QWidget.__init__(self) self.win = win self.setWindowTitle('Electrum - '+_('Payment Request')) self.setMinimumSize(800, 250) self.address = '' self.label = '' self.amount = 0 self.setFocusPolicy(QtCore.Qt.NoFocus) main_box = QHBoxLayout() self.qrw = QRCodeWidget() main_box.addWidget(self.qrw, 1) vbox = QVBoxLayout() main_box.addLayout(vbox) self.address_label = QLabel("") #self.address_label.setFont(QFont(MONOSPACE_FONT)) vbox.addWidget(self.address_label) self.label_label = QLabel("") vbox.addWidget(self.label_label) self.amount_label = QLabel("") vbox.addWidget(self.amount_label) vbox.addStretch(1) self.setLayout(main_box)
def createDisplay(self): self.displayLCD = QGroupBox("") layout = QHBoxLayout() paletteLosses = QPalette() paletteVictory = QPalette() paletteLosses.setColor(paletteLosses.WindowText, QColor(255, 000, 000)) paletteVictory.setColor(paletteVictory.WindowText, QColor(000, 255, 000)) self.lossesLcd = QLCDNumber(3) self.lossesLcd.setSegmentStyle(QLCDNumber.Filled) self.lossesLcd.setPalette(paletteLosses) self.victoryLcd = QLCDNumber(3) self.victoryLcd.setSegmentStyle(QLCDNumber.Filled) self.victoryLcd.setPalette(paletteVictory) self.lossesLcd.setMinimumHeight(100) self.victoryLcd.setMinimumHeight(100) self.lossesLcd.setMinimumWidth(150) self.victoryLcd.setMinimumWidth(150) layout.addWidget(self.victoryLcd) layout.addWidget(self.lossesLcd) self.displayLCD.setLayout(layout)
def intervalButtons(self): widget = QGroupBox('Interval') group = QButtonGroup(widget) layout = QHBoxLayout() widget.setLayout(layout) def setInterval(): self.interval = group.checkedId() interval = self.INTERVALS[self.interval][0] self.updateTitle() if interval: self.progress.show() self.progress.setMaximum(interval) value = self.timer.seconds() if value < interval: self.progress.resume() else: self.progress.stop() self.progress.setValue(min(interval, value)) else: self.progress.hide() for i, interval in enumerate(self.INTERVALS): button = QPushButton(interval[1]) button.setCheckable(True) button.clicked.connect(setInterval) group.addButton(button, i) layout.addWidget(button, 1 if i > 0 else 0) return widget
class LetterListTab(QWidget): dbhelper = None def __init__(self, dbhelper, *args): super(LetterListTab, self).__init__(*args) Lumberjack.info('spawning a << LetterListTab >>') self.dbhelper = dbhelper self.horizontalLayout = QHBoxLayout(self) model = AlchemicalTableModel( self.dbhelper.get_app_db_session(), Letter, [('Date', Letter.date, 'date', {}), ('Subject', Letter.subject, 'subject', {}), ('Sender', Letter.relation, 'relation.name', {}), ('Reference', Letter.reference, 'reference', {}), ('User', Letter.user, 'user.fullname', {}), ('Letter scan', Letter.scan_file, 'scan_file', {}), ('Letter type', Letter.letter_type, 'letter_type.letter', {}), ('Date created', Letter.date_created, 'date_created', {})]) self.tableView = MyTableView() self.tableView.setModel(model) self.form = LetterForm(model, self.dbhelper) selectionModel = self.tableView.selectionModel() selectionModel.selectionChanged.connect(self.form.set_mapper_index_from_selection) self.horizontalLayout.addWidget(self.form) self.horizontalLayout.addWidget(self.tableView) self.setLayout(self.horizontalLayout)
class BankAccountListTab(QWidget): dbhelper = None def __init__(self, dbhelper, *args): super(BankAccountListTab, self).__init__(*args) Lumberjack.info('spawning a << BankAccountListTab >>') self.dbhelper = dbhelper self.horizontalLayout = QHBoxLayout(self) model = AlchemicalTableModel( self.dbhelper.get_app_db_session(), BankAccount, [('Bank name', BankAccount.bank_name, 'bank_name', {}), ('User', BankAccount.user, 'user.name', {}), ('Account Nr.', BankAccount.account, 'account', {}), ('Balance', BankAccount.balance, 'balance', {'type': 'currency', }), ('Date created', BankAccount.date_created, 'date_created', {})]) # TODO - Create visual effect for negative balance or amount eg: green for positive, red for negative. self.tableView = MyTableView() self.tableView.setModel(model) self.form = BankAccountForm(model, self.dbhelper) self.form.tableBuddy = self.tableView selectionModel = self.tableView.selectionModel() selectionModel.selectionChanged.connect(self.form.set_mapper_index_from_selection) self.horizontalLayout.addWidget(self.form) self.horizontalLayout.addWidget(self.tableView) self.setLayout(self.horizontalLayout)
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)
class EmailAddressListTab(QWidget): dbhelper = None def __init__(self, dbhelper, *args): super(EmailAddressListTab, self).__init__(*args) Lumberjack.info('spawning a << EmailAddressListTab >>') self.dbhelper = dbhelper self.horizontalLayout = QHBoxLayout(self) model = AlchemicalTableModel( self.dbhelper.get_app_db_session(), EmailAddress, [('User', EmailAddress.user, 'user.fullname', {}), ('Address', EmailAddress.address, 'address', {}), ('Date created', EmailAddress.date_created, 'date_created', {})]) self.tableView = MyTableView() self.tableView.setModel(model) self.form = EmailAddressForm(model, self.dbhelper) selectionModel = self.tableView.selectionModel() selectionModel.selectionChanged.connect(self.form.set_mapper_index_from_selection) self.horizontalLayout.addWidget(self.form) self.horizontalLayout.addWidget(self.tableView) self.setLayout(self.horizontalLayout)
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 __init__(self, path, gallery, parent=None): super().__init__(parent) gallery.dead_link = True def commit(): msgbox = QMessageBox(self) msgbox.setIcon(QMessageBox.Question) msgbox.setWindowTitle('Type of gallery source') msgbox.setInformativeText('What type of gallery source is it?') dir = msgbox.addButton('Directory', QMessageBox.YesRole) archive = msgbox.addButton('Archive', QMessageBox.NoRole) msgbox.exec() new_path = '' if msgbox.clickedButton() == dir: new_path = QFileDialog.getExistingDirectory(self, 'Choose directory') elif msgbox.clickedButton() == archive: new_path = QFileDialog.getOpenFileName(self, 'Choose archive', filter=utils.FILE_FILTER) new_path = new_path[0] else: return None if new_path: g = utils.update_gallery_path(new_path, gallery) self.UPDATE_SIGNAL.emit(g) self.close() def remove_commit(): self.REMOVE_SIGNAL.emit(gallery) self.close() main_layout = QVBoxLayout() inner_layout = QHBoxLayout() cover = QLabel() img = QPixmap(gallery.profile) cover.setPixmap(img) title_lbl = QLabel(gallery.title) title_lbl.setAlignment(Qt.AlignCenter) info_lbl = QLabel("The path to this gallery has been removed\n"+ "What do you want to do?") #info_lbl.setWordWrap(True) path_lbl = QLabel(path) path_lbl.setWordWrap(True) info_lbl.setAlignment(Qt.AlignCenter) inner_layout.addWidget(cover) inner_layout.addWidget(info_lbl) main_layout.addLayout(inner_layout) main_layout.addWidget(path_lbl) close_btn = QPushButton('Close') close_btn.clicked.connect(self.close) update_btn = QPushButton('Update path...') update_btn.clicked.connect(commit) remove_btn = QPushButton('Remove') remove_btn.clicked.connect(remove_commit) buttons_layout = QHBoxLayout() buttons_layout.addWidget(remove_btn) buttons_layout.addWidget(update_btn) buttons_layout.addWidget(close_btn) main_layout.addWidget(title_lbl) main_layout.addLayout(buttons_layout) self.main_widget.setLayout(main_layout) self.adjustSize() self.show()
def _build_add_del_part(self, child_editors, layout, box, modify_callback, current_name): def add_handler(): new_element = self.append() i = len(child_editors) editor = new_element.to_editor(modify_callback, "%s[%d]" % (current_name, i)) layout.insertWidget(i, editor) child_editors.append(editor) if modify_callback: modify_callback(current_name, self, box) def delete_handler(): if len(child_editors) == 0: return self.pop() child_editors[-1].setParent(None) child_editors.pop() if modify_callback: modify_callback(current_name, self, box) button_add = QPushButton("+") button_add.clicked.connect(add_handler) button_delete = QPushButton("-") button_delete.clicked.connect(delete_handler) hlayout = QHBoxLayout() hlayout.addWidget(button_add) hlayout.addWidget(button_delete) layout.addLayout(hlayout)
class DateRangeSelectorView(QWidget): def __init__(self, parent=None): QWidget.__init__(self, parent) self._setupUi() def _setupUi(self): self.resize(259, 32) self.horizontalLayout = QHBoxLayout(self) self.horizontalLayout.setContentsMargins(0, 0, 0, 0) self.prevButton = QPushButton(self) icon = QIcon() icon.addPixmap(QPixmap(":/nav_left_9"), QIcon.Normal, QIcon.Off) self.prevButton.setIcon(icon) self.horizontalLayout.addWidget(self.prevButton) self.typeButton = QPushButton("<date range>") sizePolicy = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.typeButton.sizePolicy().hasHeightForWidth()) self.typeButton.setSizePolicy(sizePolicy) self.typeButton.setMinimumSize(QSize(0, 0)) self.typeButton.setMaximumSize(QSize(16777215, 16777215)) self.typeButton.setIconSize(QSize(6, 6)) self.horizontalLayout.addWidget(self.typeButton) self.nextButton = QPushButton(self) icon1 = QIcon() icon1.addPixmap(QPixmap(":/nav_right_9"), QIcon.Normal, QIcon.Off) self.nextButton.setIcon(icon1) self.horizontalLayout.addWidget(self.nextButton) self.horizontalLayout.setStretch(1, 1)
def _get_control_layout(self): """ Create static layout. """ widget = QWidget() vbox = QVBoxLayout() widget.setLayout(vbox) vbox.setContentsMargins(0, 0, 0, 0) self.template_combo_box = QComboBox() self.template_combo_box.currentIndexChanged.connect(self._item_selected) vbox.addWidget(self.template_combo_box) scrollable_vbox = utils.get_scrollable(self.controls_layout) vbox.addWidget(scrollable_vbox, stretch=80) buttons_layout = QHBoxLayout() vbox.addLayout(buttons_layout, stretch=20) b = QPushButton("Назад") b.setObjectName("controls") b.clicked.connect(self._close) buttons_layout.addWidget(b) widget.setGraphicsEffect(utils.get_shadow()) return widget
def __init__(self): super(MainWindow, self).__init__() self.createActions() self.createMenus() self.createToolBox() self.scene = DiagramScene(self.itemMenu) self.scene.setSceneRect(QRectF(0, 0, 5000, 5000)) self.scene.itemInserted.connect(self.itemInserted) self.scene.textInserted.connect(self.textInserted) self.scene.itemSelected.connect(self.itemSelected) self.createToolbars() layout = QHBoxLayout() layout.addWidget(self.toolBox) self.view = QGraphicsView(self.scene) layout.addWidget(self.view) self.widget = QWidget() self.widget.setLayout(layout) self.setCentralWidget(self.widget) self.setWindowTitle("Diagramscene")
def _make_file_info(self, filename: str) -> QLayout: # Widgets file_icon = QLabel() file_icon.setPixmap(QIcon.fromTheme("document").pixmap(48)) file_icon.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) file_info = QLabel("Filename: <b>{}</b><br>" "Size: 0 bytes<br>" "Modified: Today".format(html.escape(filename))) file_info.setTextFormat(Qt.RichText) file_info.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) rename_btn = QPushButton("Rename") # Layout hbox = QHBoxLayout() hbox.addWidget(file_icon) hbox.addWidget(file_info) hbox.addWidget(rename_btn) # Signals if filename is self._source_filename: rename_btn.clicked.connect(lambda: self.done(ConflictResolution.RENAME_SOURCE.value)) elif filename is self._target_filename: rename_btn.clicked.connect(lambda: self.done(ConflictResolution.RENAME_TARGET.value)) return hbox
def __init__(self, parent=None): super().__init__(parent) self.setSubTitle(self.tr("<h2>Setup Mouse Behavior</h2>")) vlayout = QVBoxLayout(self) labelLayout = QHBoxLayout() imageLabel = QLabel() imageLabel.setPixmap(QPixmap(":/data/images/preferences-desktop-peripherals.png")) imageLabel.setMaximumSize(64, 64) labelLayout.addWidget(imageLabel) mouseLabel = QLabel(self) mouseLabel.setText(self.tr("""<p>The <strong>clicking behavior</strong> defines how many times you want to click when you are opening a file. If you are <strong>left handed</strong>, you may prefer to swap the left and right buttons of your pointing device.</p>""")) mouseLabel.setWordWrap(True) labelLayout.addWidget(mouseLabel) vlayout.addLayout(labelLayout) vlayout.addItem(QSpacerItem(20, 100, QSizePolicy.Preferred, QSizePolicy.Preferred)) hlayout = QHBoxLayout() vlayout.addLayout(hlayout) self.createGroupBox(hlayout) vlayout.addItem(QSpacerItem(20, 40, QSizePolicy.Preferred, QSizePolicy.Preferred)) self.folderSingleClick = False self.mouseButtonMap = "RightHanded" self.reverseScrollPolarity = False
def __init__(self, parent=None): super(ConfigurationPage, self).__init__(parent) configGroup = QGroupBox("Server configuration") serverLabel = QLabel("Server:") serverCombo = QComboBox() serverCombo.addItem("Trolltech (Australia)") serverCombo.addItem("Trolltech (Germany)") serverCombo.addItem("Trolltech (Norway)") serverCombo.addItem("Trolltech (People's Republic of China)") serverCombo.addItem("Trolltech (USA)") serverLayout = QHBoxLayout() serverLayout.addWidget(serverLabel) serverLayout.addWidget(serverCombo) configLayout = QVBoxLayout() configLayout.addLayout(serverLayout) configGroup.setLayout(configLayout) mainLayout = QVBoxLayout() mainLayout.addWidget(configGroup) mainLayout.addStretch(1) self.setLayout(mainLayout)
def __init__(self, parent: QWidget = None): super(InputStringDialog, self).__init__(parent) self._value = "" # layout self._layout = QVBoxLayout() self.setLayout(self._layout) self._hlayout1 = QHBoxLayout() self._hlayout2 = QHBoxLayout() # input controls self._lbl_prompt = QLabel(self) self._le_text = QLineEdit(self) # buttons # self._btn_ok = QPushButton(self.tr('OK'), self) # self._btn_cancel = QPushButton(self.tr('Cancel'), self) self._btnbox = QDialogButtonBox(self) self._btnbox.addButton(QDialogButtonBox.Ok) self._btnbox.addButton(QDialogButtonBox.Cancel) self._btnbox.accepted.connect(self.on_ok) self._btnbox.rejected.connect(self.on_cancel) # # finalize layout self._hlayout1.addWidget(self._lbl_prompt) self._hlayout1.addWidget(self._le_text) self._hlayout2.addWidget(self._btnbox) self._layout.addLayout(self._hlayout1) self._layout.addLayout(self._hlayout2)
def _show_templates(self): """ Update templates on shoeEvent. """ cols = 3 templates = template_module.Template.get_all() for j, item in enumerate(self.visible_items): if not templates[item.id]: l = QLabel("Нет шаблонов для данного объекта\nУправлять шаблонами можно на вкладке настроек") l.setAlignment(Qt.AlignCenter) self.templates_layout.addWidget(l) continue layouts = [QVBoxLayout() for _ in range(cols)] for i, each in enumerate(templates[item.id]): b = QRadioButton(each.name) b.setChecked(item.template == each) b.clicked.connect(functools.partial(self._template_clicked, j, each)) b.mouseDoubleClickEvent = functools.partial(self.open_template_edit_widget, j, each) layouts[i % cols].addWidget(b) wrapper = QHBoxLayout() for each in layouts: each.addStretch() wrapper.addLayout(each, stretch=int(100 / cols)) self.templates_layout.addWidget(utils.get_scrollable(wrapper))
def init(self, parent): layout = QHBoxLayout(parent) layout.setContentsMargins(0, 0, 0, 0) self.m_treeWidget = QtPropertyEditorView(parent) self.m_treeWidget.setEditorPrivate(self) self.m_treeWidget.setIconSize(QSize(18, 18)) layout.addWidget(self.m_treeWidget) parent.setFocusProxy(self.m_treeWidget) self.m_treeWidget.setColumnCount(2) labels = QList() labels.append(QCoreApplication.translate("QtTreePropertyBrowser", "Property")) labels.append(QCoreApplication.translate("QtTreePropertyBrowser", "Value")) self.m_treeWidget.setHeaderLabels(labels) self.m_treeWidget.setAlternatingRowColors(True) self.m_treeWidget.setEditTriggers(QAbstractItemView.EditKeyPressed) self.m_delegate = QtPropertyEditorDelegate(parent) self.m_delegate.setEditorPrivate(self) self.m_treeWidget.setItemDelegate(self.m_delegate) self.m_treeWidget.header().setSectionsMovable(False) self.m_treeWidget.header().setSectionResizeMode(QHeaderView.Stretch) self.m_expandIcon = drawIndicatorIcon(self.q_ptr.palette(), self.q_ptr.style()) self.m_treeWidget.collapsed.connect(self.slotCollapsed) self.m_treeWidget.expanded.connect(self.slotExpanded) self.m_treeWidget.currentItemChanged.connect(self.slotCurrentTreeItemChanged)
def initialize(self): tab_widget = QTabWidget() tab1 = QWidget() tab2 = QWidget() juggle_button = QPushButton("Juggle") juggle_button.clicked.connect(self.start_simulation) hbox = QHBoxLayout() hbox.addStretch(1) hbox.addWidget(juggle_button) vbox = QVBoxLayout(tab1) vbox.addStretch(1) vbox.addLayout(hbox) hbox2 = QHBoxLayout(tab2) tab_widget.addTab(tab1, "Main") tab_widget.addTab(tab2, "Other") self.setCentralWidget(tab_widget) menubar = self.menuBar() file_menu = menubar.addMenu('&File') help_menu = menubar.addMenu('&Help') about = help_menu.addMenu('&About') exit_action = QAction(QIcon('exit.png'), '&Exit', self) exit_action.triggered.connect(qApp.quit) file_menu.addAction(exit_action) self.setGeometry(300, 300, 350, 300) self.setWindowTitle('Juggling Simulator') self.show()
def __init__(self, form_context, parent=None): super().__init__(parent) self._form_context = form_context self.setObjectName("FundsSelector") balance = form_context.wallet_api.get_balance() sv_text, fiat_text = form_context.wallet_api.get_amount_and_units(balance) if fiat_text: column_count = 3 else: column_count = 2 model = QStandardItemModel(1, 3, self) model.setItem(0, 0, QStandardItem(_("All available funds"))) sv_item = QStandardItem(sv_text) sv_item.setTextAlignment(Qt.AlignRight | Qt.AlignVCenter) model.setItem(0, 1, sv_item) if fiat_text: fiat_item = QStandardItem(fiat_text) fiat_item.setTextAlignment(Qt.AlignRight | Qt.AlignVCenter) model.setItem(0, 2, fiat_item) tableView = QTableView(self) tableView.setObjectName("FundsSelectionPopup") tableView.setWordWrap(False) tableView.setModel(model) tableView.verticalHeader().setVisible(False) tableView.horizontalHeader().setVisible(False) tableView.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded) tableView.setSelectionBehavior(QAbstractItemView.SelectRows) tableView.setAutoScroll(False) tableView.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Fixed) # Show more compact rows, this will actually be larger forced out by the contents to be # just the necessary size. tableView.setRowHeight(0, 20) combo = QComboBox() combo.setObjectName("FundsSelectorCombo") combo.setModel(model) combo.setView(tableView) combo.setMinimumWidth(300) # Detect when the combobox popup view is shown by rebinding and wrapping the method. def _new_showPopup(_self: QTableView) -> None: nonlocal old_showPopup, tableView old_showPopup() tableView.resizeColumnsToContents() old_showPopup = combo.showPopup setattr(combo, "showPopup", _new_showPopup.__get__(combo, combo.__class__)) hlayout1 = QHBoxLayout() hlayout1.setSpacing(0) hlayout1.setContentsMargins(0, 0, 0, 2) hlayout1.addWidget(combo, 1) hlayout2 = QHBoxLayout() hlayout2.setSpacing(0) hlayout2.setContentsMargins(0, 2, 0, 0) balance_icon_label = QLabel("") balance_icon_label.setPixmap(QPixmap(icon_path("sb_balance.png"))) balance_icon_label.setToolTip(_("The balance of the selected account.")) hlayout2.addWidget(balance_icon_label) hlayout2.addSpacing(4) sv_balance = QLineEdit(sv_text) sv_balance.balance_currency = form_context.wallet_api.get_base_unit() sv_balance.balance_amount = form_context.wallet_api.get_base_amount(balance) sv_balance.setAlignment(Qt.AlignHCenter) sv_balance.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed) sv_balance.setReadOnly(True) hlayout2.addWidget(sv_balance) if fiat_text: hlayout2.addSpacing(2) balance_equals_label = QLabel("") balance_equals_label.setPixmap(QPixmap(icon_path("sb_approximate"))) hlayout2.addWidget(balance_equals_label) hlayout2.addSpacing(2) fiat_balance = QLineEdit(fiat_text) fiat_balance.balance_currency = form_context.wallet_api.get_fiat_unit() fiat_balance.balance_amount = form_context.wallet_api.get_fiat_amount(balance) fiat_balance.setAlignment(Qt.AlignHCenter) fiat_balance.setReadOnly(True) hlayout2.addWidget(fiat_balance) vlayout = QVBoxLayout() vlayout.setSpacing(0) vlayout.setContentsMargins(0, 0, 0, 0) vlayout.addLayout(hlayout1) vlayout.addLayout(hlayout2) self.setLayout(vlayout) self._sv_balance = sv_balance self._fiat_balance = fiat_balance sv_balance.installEventFilter(self) fiat_balance.installEventFilter(self)
def __init__(self, parent): QVBoxLayout.__init__(self) self.parent = parent self.name = 'Measure' self.trigger = None box_layout = QHBoxLayout() self.addLayout(box_layout) self.experiment_box = QComboBox() box_layout.addWidget(self.experiment_box) self.experiment_box.currentTextChanged.connect(self.update_params) box_layout.addWidget(IconButton('dashboard/gui/media/Material/content-save-outline.svg', self.save_params, tooltip='Save parameters')) box_layout.addWidget(IconButton('dashboard/gui/media/Material/content-undo.svg', self.reset_params, tooltip='Reset parameters')) # box_layout.addWidget(IconButton('dashboard/gui/media/Material/outline-repeat_one.svg', self.update_params)) trigger_button = IconButton('dashboard/gui/media/Material/outline-hourglass-empty.svg', None, tooltip='Trigger') box_layout.addWidget(trigger_button) # placeholder box_layout.addWidget(IconButton('dashboard/gui/media/Material/outline-play-arrow.svg', lambda: parent.start_process(process='measure'), tooltip='Start')) self.trigger_menu = QMenu() self.trigger_menu.addAction('No triggers defined') trigger_button.setMenu(self.trigger_menu) ''' Experiment parameters ''' self.experiment_table = ParameterTable() self.addWidget(self.experiment_table)
def createControl(self): #self.msg.emit("Hello") self.rotSliderLayout = QHBoxLayout() self.rotSlider = QSlider(Qt.Horizontal) self.rotSlider.setRange(*self.maxRange['x']) self.rotSlider.setMinimumWidth(300) self.rotSlider.setTickInterval(5) self.rotSlider.setTickPosition(QSlider().TicksBothSides) self.rotSlider.valueChanged[int].connect(self.rotSliderChanged) self.rotLabel = QLabel('Rotate') self.rotLine = QLineEdit('0') self.rotLine.setMaximumWidth(30) self.rotSliderLayout.addWidget(self.rotSlider) self.rotSliderLayout.addStretch(1) self.rotSliderLayout.addWidget(self.rotLabel) self.rotSliderLayout.addWidget(self.rotLine) self.controlLayout = QHBoxLayout() self.joystick = Joy(self.maxRange) self.joystick.setFocusPolicy(Qt.StrongFocus) self.joystick.setMinimumSize(300, 200) self.joystick.sender[int, int].connect(self.joystickMoved) self.gazSlider = QSlider(Qt.Vertical) self.gazSlider.setRange(*self.maxRange['y']) self.gazSlider.setMinimumWidth(80) self.gazSlider.setTickInterval(2) self.gazSlider.setTickPosition(QSlider().TicksBothSides) self.gazSlider.valueChanged[int].connect(self.gazSliderChanged) self.controlLayout.addStretch(1) self.controlLayout.addWidget(self.joystick) self.controlLayout.addStretch(1) self.controlLayout.addWidget(self.gazSlider) self.controlLayout.addStretch(1) self.bottomLayout = QHBoxLayout() self.bKey = QPushButton('key') self.bFix = QPushButton('Fix') self.bLog = QPushButton('Log') self.bLog.clicked.connect(self.p) self.bSettings = QPushButton('set') self.bKey.setMaximumWidth(40) self.bFix.setMaximumWidth(40) self.bLog.setMaximumWidth(40) self.bSettings.setMaximumWidth(40) self.labelSpeed = QLabel('Speed') self.lineSpeed = QLineEdit('0') self.gazLabel = QLabel('Gas') self.gazLine = QLineEdit('0') self.lineSpeed.setMaximumWidth(50) self.bottomLayout.addWidget(self.bKey) self.bottomLayout.addWidget(self.bFix) self.bottomLayout.addWidget(self.bLog) self.bottomLayout.addWidget(self.bSettings) self.bottomLayout.addStretch(1) self.bottomLayout.addWidget(self.labelSpeed) self.bottomLayout.addWidget(self.lineSpeed) self.bottomLayout.addWidget(self.gazLabel) self.bottomLayout.addWidget(self.gazLine) self.bottomLayout.addStretch(1) self.mainWidgetLayout.addLayout(self.rotSliderLayout) self.mainWidgetLayout.addLayout(self.controlLayout) self.mainWidgetLayout.addLayout(self.bottomLayout)
class Control(Widgets): maxRange = {'x': (-90, 90), 'y': (-30, 30)} isConnected = False def __init__(self, pasp): super().__init__(pasp) self.createMenu() self.createControl() self.createConnecter() def createMenu(self): self.gb = QGroupBox() self.gbLayout = QHBoxLayout() self.gbLayout.addWidget(self.gb) self.gb.setTitle('Windows') self.menuLayout = QHBoxLayout() self.gb.setLayout(self.menuLayout) self.mainWidgetLayout.addLayout(self.gbLayout) self.setMaximumWidth(400) self.setMaximumHeight(400) self.lis = ('Camera', 'Map', 'Locator (atop)', 'locator (side)', 'Collisions') self.menu = [0] * 5 self.menuBoxMapper = QSignalMapper(self) for i in range(5): self.menu[i] = QCheckBox(self.lis[i]) self.menuBoxMapper.setMapping(self.menu[i], i) self.menu[i].stateChanged[int].connect(self.menuBoxMapper.map) self.menuLayout.addWidget(self.menu[i]) self.menuBoxMapper.mapped[int].connect(self.changeWindows) self.bLog = QPushButton('Log') self.bSettings = QPushButton('set') def changeWindows(self, i): state = self.menu[i].checkState() #self.changeWindSignal.emit(i, state) def createControl(self): #self.msg.emit("Hello") self.rotSliderLayout = QHBoxLayout() self.rotSlider = QSlider(Qt.Horizontal) self.rotSlider.setRange(*self.maxRange['x']) self.rotSlider.setMinimumWidth(300) self.rotSlider.setTickInterval(5) self.rotSlider.setTickPosition(QSlider().TicksBothSides) self.rotSlider.valueChanged[int].connect(self.rotSliderChanged) self.rotLabel = QLabel('Rotate') self.rotLine = QLineEdit('0') self.rotLine.setMaximumWidth(30) self.rotSliderLayout.addWidget(self.rotSlider) self.rotSliderLayout.addStretch(1) self.rotSliderLayout.addWidget(self.rotLabel) self.rotSliderLayout.addWidget(self.rotLine) self.controlLayout = QHBoxLayout() self.joystick = Joy(self.maxRange) self.joystick.setFocusPolicy(Qt.StrongFocus) self.joystick.setMinimumSize(300, 200) self.joystick.sender[int, int].connect(self.joystickMoved) self.gazSlider = QSlider(Qt.Vertical) self.gazSlider.setRange(*self.maxRange['y']) self.gazSlider.setMinimumWidth(80) self.gazSlider.setTickInterval(2) self.gazSlider.setTickPosition(QSlider().TicksBothSides) self.gazSlider.valueChanged[int].connect(self.gazSliderChanged) self.controlLayout.addStretch(1) self.controlLayout.addWidget(self.joystick) self.controlLayout.addStretch(1) self.controlLayout.addWidget(self.gazSlider) self.controlLayout.addStretch(1) self.bottomLayout = QHBoxLayout() self.bKey = QPushButton('key') self.bFix = QPushButton('Fix') self.bLog = QPushButton('Log') self.bLog.clicked.connect(self.p) self.bSettings = QPushButton('set') self.bKey.setMaximumWidth(40) self.bFix.setMaximumWidth(40) self.bLog.setMaximumWidth(40) self.bSettings.setMaximumWidth(40) self.labelSpeed = QLabel('Speed') self.lineSpeed = QLineEdit('0') self.gazLabel = QLabel('Gas') self.gazLine = QLineEdit('0') self.lineSpeed.setMaximumWidth(50) self.bottomLayout.addWidget(self.bKey) self.bottomLayout.addWidget(self.bFix) self.bottomLayout.addWidget(self.bLog) self.bottomLayout.addWidget(self.bSettings) self.bottomLayout.addStretch(1) self.bottomLayout.addWidget(self.labelSpeed) self.bottomLayout.addWidget(self.lineSpeed) self.bottomLayout.addWidget(self.gazLabel) self.bottomLayout.addWidget(self.gazLine) self.bottomLayout.addStretch(1) self.mainWidgetLayout.addLayout(self.rotSliderLayout) self.mainWidgetLayout.addLayout(self.controlLayout) self.mainWidgetLayout.addLayout(self.bottomLayout) def p(self): print('Ffffffff') def createConnecter(self): self.connectGB = QGroupBox(self) self.connectGBLayout = QHBoxLayout() self.choosePortBox = QFormLayout() self.cbPort = QComboBox() self.cbPort.setMaximumWidth(80) self.cbPort.addItems(d.portList) self.cbPort.activated[int].connect(self.connect) self.cbPort.setCurrentIndex(15) self.cbLabel = QLabel('<font color = "red">Disconnected</font>') self.choosePortBox.addRow("Port", self.cbPort) self.choosePortBox.addRow("State", self.cbLabel) self.connectGBLayout.addLayout(self.choosePortBox) self.chooseSpeedBox = QFormLayout() self.cbSpeed = QComboBox() self.cbSpeed.setMaximumWidth(80) self.cbSpeed.addItems(d.serialSpeedCases) self.cbSpeed.setCurrentIndex(0) self.chooseSpeedBox.addRow("Speed", self.cbSpeed) self.connectGBLayout.addLayout(self.chooseSpeedBox) self.connectGB.setLayout(self.connectGBLayout) self.mainWidgetLayout.addWidget(self.connectGB) self.pSending = QPixmap('pause.png') self.lSending = QLabel() self.lSending.setPixmap(self.pSending) self.pCheck = QPushButton('Check') self.connectGBLayout.addWidget(self.lSending) self.connectGBLayout.addWidget(self.pCheck) def rotSliderChanged(self, rot): global rotate rotate = rot self.updateControls() def gazSliderChanged(self, gaze): global gaz gaz = gaze self.updateControls() def updateControls(self): self.rotLine.setText(str(rotate)) self.gazLine.setText(str(gaz)) self.joystick.setPosition(rotate, gaz) self.rotSlider.setValue(rotate) self.gazSlider.setValue(gaz) self.send.emit('move' + str(rotate) + '/' + str(gaz), self.pasp) def joystickMoved(self, x, y): global gaz global rotate gaz = y rotate = x self.updateControls() def connect(self, port): global portList speed = self.cbSpeed.currentText() self.sendData('connect' + d.portList[port] + '/' + speed) def connectStateChanged(self, data): if data == True: self.cbLabel.setText('font color = "green">Connected</font>') else: self.cbLabel.setText('<font color = "red">Disconnected</font>')
def request_safe_t_init_settings(self, wizard, method, device): vbox = QVBoxLayout() next_enabled = True label = QLabel(_("Enter a label to name your device:")) name = QLineEdit() hl = QHBoxLayout() hl.addWidget(label) hl.addWidget(name) hl.addStretch(1) vbox.addLayout(hl) def clean_text(widget): text = widget.toPlainText().strip() return ' '.join(text.split()) if method in [TIM_NEW, TIM_RECOVER]: gb = QGroupBox() hbox1 = QHBoxLayout() gb.setLayout(hbox1) vbox.addWidget(gb) gb.setTitle(_("Select your seed length:")) bg = QButtonGroup() for i, count in enumerate([12, 18, 24]): rb = QRadioButton(gb) rb.setText(_("{:d} words").format(count)) bg.addButton(rb) bg.setId(rb, i) hbox1.addWidget(rb) rb.setChecked(True) cb_pin = QCheckBox(_('Enable PIN protection')) cb_pin.setChecked(True) else: text = QTextEdit() text.setMaximumHeight(60) if method == TIM_MNEMONIC: msg = _("Enter your BIP39 mnemonic:") else: msg = _("Enter the master private key beginning with xprv:") def set_enabled(): from electrum_nmc.bip32 import is_xprv wizard.next_button.setEnabled(is_xprv(clean_text(text))) text.textChanged.connect(set_enabled) next_enabled = False vbox.addWidget(QLabel(msg)) vbox.addWidget(text) pin = QLineEdit() pin.setValidator(QRegExpValidator(QRegExp('[1-9]{0,9}'))) pin.setMaximumWidth(100) hbox_pin = QHBoxLayout() hbox_pin.addWidget(QLabel(_("Enter your PIN (digits 1-9):"))) hbox_pin.addWidget(pin) hbox_pin.addStretch(1) if method in [TIM_NEW, TIM_RECOVER]: vbox.addWidget(WWLabel(RECOMMEND_PIN)) vbox.addWidget(cb_pin) else: vbox.addLayout(hbox_pin) passphrase_msg = WWLabel(PASSPHRASE_HELP_SHORT) passphrase_warning = WWLabel(PASSPHRASE_NOT_PIN) passphrase_warning.setStyleSheet("color: red") cb_phrase = QCheckBox(_('Enable passphrases')) cb_phrase.setChecked(False) vbox.addWidget(passphrase_msg) vbox.addWidget(passphrase_warning) vbox.addWidget(cb_phrase) wizard.exec_layout(vbox, next_enabled=next_enabled) if method in [TIM_NEW, TIM_RECOVER]: item = bg.checkedId() pin = cb_pin.isChecked() else: item = ' '.join(str(clean_text(text)).split()) pin = str(pin.text()) return (item, name.text(), pin, cb_phrase.isChecked())
def _setUp(self): self._lay=QHBoxLayout(self,self.parentWidget())
def add_row(self, label_text: QWidget, field_widget: QWidget, stretch_field: bool=False) -> None: line = QFrame() line.setObjectName("PaymentSeparatorLine") line.setFrameShape(QFrame.HLine) line.setFixedHeight(1) self.frame_layout.addWidget(line) label = QLabel(label_text) label.setObjectName("PaymentSectionLabel") label.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum) help_label = QLabel() help_label.setPixmap( QPixmap(icon_path("icons8-help.svg")).scaledToWidth(16, Qt.SmoothTransformation)) help_label.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum) label_layout = QHBoxLayout() label_layout.addWidget(label) label_layout.addWidget(help_label) # Ensure that the top-aligned vertical spacing matches the fields. label_layout.setContentsMargins(0,2,0,2) label_layout.setSizeConstraint(QLayout.SetFixedSize) grid_layout = QGridLayout() grid_layout.addLayout(label_layout, 0, 0, Qt.AlignLeft | Qt.AlignTop) if stretch_field: grid_layout.addWidget(field_widget, 0, 1) else: field_layout = QHBoxLayout() field_layout.setContentsMargins(0, 0, 0, 0) field_layout.addWidget(field_widget) field_layout.addStretch(1) grid_layout.addLayout(field_layout, 0, 1) grid_layout.setColumnMinimumWidth(0, 80) grid_layout.setColumnStretch(0, 0) grid_layout.setColumnStretch(1, 1) grid_layout.setHorizontalSpacing(0) grid_layout.setSizeConstraint(QLayout.SetMinimumSize) self.frame_layout.addLayout(grid_layout)
def initUI(self): # 레이아웃 첫째 줄 Name = QLabel('Name :', self) self.NameInput = QLineEdit() Age = QLabel('Age :', self) self.AgeInput = QLineEdit() Score = QLabel('Score :', self) self.ScoreInput = QLineEdit() hbox = QHBoxLayout() hbox.addWidget(Name) hbox.addWidget(self.NameInput) hbox.addWidget(Age) hbox.addWidget(self.AgeInput) hbox.addWidget(Score) hbox.addWidget(self.ScoreInput) # 레이아웃 둘째 줄 Amount = QLabel('Amount :', self) self.AmountInput = QLineEdit() Key = QLabel('Key :') self.KeyList = QComboBox() self.KeyList.addItem("Name") self.KeyList.addItem("Score") self.KeyList.addItem("Age") hbox2 = QHBoxLayout() hbox2.addStretch() hbox2.addWidget(Amount) hbox2.addWidget(self.AmountInput) hbox2.addWidget(Key) hbox2.addWidget(self.KeyList) # 레이아웃 셋째 줄 AddButton = QPushButton('Add', self) DelButton = QPushButton('Del', self) FindButton = QPushButton('Find', self) IncButton = QPushButton('Inc', self) ShowButton = QPushButton('Show', self) AddButton.clicked.connect(self.AddButtonClicked) DelButton.clicked.connect(self.DelButtonClicked) FindButton.clicked.connect(self.FindButtonClicked) IncButton.clicked.connect(self.IncButtonClicked) ShowButton.clicked.connect(self.ShowButtonClicked) hbox3 = QHBoxLayout() hbox3.addStretch() hbox3.addWidget(AddButton) hbox3.addWidget(DelButton) hbox3.addWidget(FindButton) hbox3.addWidget(IncButton) hbox3.addWidget(ShowButton) # 레이아웃 넷쨰 줄 Result = QLabel('Result :') hbox4 = QHBoxLayout() # hbox4.addStretch() hbox4.addWidget(Result) # 레이아웃 다섯쨰 줄 self.ResultBox = QTextEdit(self) hbox5 = QHBoxLayout() hbox5.addWidget(self.ResultBox) # 수평 정렬 레이아웃을 수직 정렬 vbox = QVBoxLayout() vbox.addLayout(hbox) vbox.addLayout(hbox2) vbox.addLayout(hbox3) vbox.addLayout(hbox4) vbox.addLayout(hbox5) self.setLayout(vbox) self.setGeometry(300, 300, 500, 250) self.setWindowTitle('Assignment6') self.show()
def __init__(self, title: str, *args, **kwargs): self.pages: Optional[Sequence[BytesIO]] = None self.current_page = 1 self.zoom_factor = 1.0 super().__init__(title, *args, **kwargs) layout = QVBoxLayout() self.setLayout(layout) scroller = QScrollArea(self) self.preview_box = QLabel(scroller) scroller.setWidget(self.preview_box) scroller.setAlignment(Qt.AlignCenter) layout.addWidget(scroller) control_layout = QHBoxLayout() self.button_zoom_fit = QPushButton( QIcon(appctxt.get_resource("actions/zoom_fit.png")), "", self) self.button_zoom_fit.clicked.connect(self.zoom_fit) self.button_zoom_out = QPushButton( QIcon(appctxt.get_resource("actions/zoom_out.png")), "", self) self.button_zoom_out.clicked.connect( lambda: self.set_zoom(self.zoom_factor * 0.9)) self.button_zoom_in = QPushButton( QIcon(appctxt.get_resource("actions/zoom_in.png")), "", self) self.button_zoom_in.clicked.connect( lambda: self.set_zoom(self.zoom_factor * 1.1)) control_layout.addWidget(self.button_zoom_fit) control_layout.addWidget(self.button_zoom_out) control_layout.addWidget(self.button_zoom_in) control_layout.addSpacing(100) self.button_prev_page = QPushButton( QIcon(appctxt.get_resource("actions/prev.png")), "", self) self.button_prev_page.clicked.connect( lambda: self.set_page(self.current_page - 1)) self.label_current_page = QLabel("", self) self.label_current_page.setAlignment(Qt.AlignCenter) self.button_next_page = QPushButton( QIcon(appctxt.get_resource("actions/next.png")), "", self) self.button_next_page.clicked.connect( lambda: self.set_page(self.current_page + 1)) control_layout.addWidget(self.button_prev_page) control_layout.addWidget(self.label_current_page) control_layout.addWidget(self.button_next_page) control_widget = QWidget(self) control_widget.setLayout(control_layout) layout.addWidget(control_widget) self.update_preview()
def setFODImageNameField(self, imageName, cameraID, subsectorID, date, time): title_FODImgName = QLabel('Image name: ' + imageName) title_cameraID = QLabel('Camera: ' + cameraID) title_subsectorID = QLabel('Subsector: ' + subsectorID) title_date = QLabel('Date: ' + date) title_time = QLabel('Time: ' + time) vbox1 = QVBoxLayout() vbox1.addWidget(title_FODImgName) vbox1.addWidget(title_cameraID) vbox1.addWidget(title_subsectorID) vbox1.addWidget(title_date) vbox1.addWidget(title_time) vbox1.setSpacing(10) vbox1.addStretch(1) # Add a strechable h-space before the widgets title_UserRemark = QLabel('User Remark: ') textbox_UserRemark = QTextEdit() # multiple lines textbox_UserRemark.setFixedHeight( textbox_UserRemark.document().size().height() * 4) textbox_UserRemark.setFixedWidth( textbox_UserRemark.document().size().width() * 20) textbox_UserRemark.setDisabled(True) gridUserRemark = QGridLayout() gridUserRemark.addWidget(textbox_UserRemark, 0, 0) # row 1 col 0, span 1 row 1 col vbox2 = QVBoxLayout() vbox2.addWidget(title_UserRemark) vbox2.addLayout(gridUserRemark) vbox2.setSpacing(10) vbox2.addStretch(1) title_SSLRemark = QLabel('SSL Remark: ') textbox_SSLRemark = QTextEdit() # multiple lines textbox_SSLRemark.setFixedHeight( textbox_SSLRemark.document().size().height() * 4) textbox_SSLRemark.setFixedWidth( textbox_SSLRemark.document().size().width() * 20) gridSSLRemark = QGridLayout() gridSSLRemark.addWidget(textbox_SSLRemark, 0, 0) # row 1 col 0, span 1 row 1 col vbox3 = QVBoxLayout() vbox3.addWidget(title_SSLRemark) vbox3.addLayout(gridSSLRemark) vbox3.setSpacing(10) vbox3.addStretch(1) button_SaveRemarks = QPushButton("Save Remarks") button_CopyImage = QPushButton("Copy Image") checkbox_skipEmptyImg = QCheckBox("Skip empty images") checkbox_skipEmptyImg.setChecked(True) #checkbox_skipEmptyImg.hide() # Not to let users know there are FOD detail without images. vbox4 = QVBoxLayout() vbox4.addWidget(button_SaveRemarks) vbox4.addWidget(button_CopyImage) vbox4.addWidget(checkbox_skipEmptyImg) vbox4.setSpacing(10) vbox4.addStretch(1) hbox = QHBoxLayout() hbox.addLayout(vbox1) hbox.addLayout(self.createEmptyBoxLayout()) hbox.addLayout(vbox2) #hbox.addLayout(self.createEmptyBoxLayout()) hbox.addLayout(vbox3) hbox.addLayout(self.createEmptyBoxLayout()) hbox.addLayout(vbox4) hbox.addStretch(1) # Add strechable v-space above the h-box pixmap_FODImage = QPixmap("FODImage.jpg") pixmap_FODImage = pixmap_FODImage.scaledToWidth(self.imageWidth * self.frameScaleRatio) display_FODImage = QLabel(self) display_FODImage.setPixmap(pixmap_FODImage) gridAppLayout = QGridLayout() gridAppLayout.addLayout(hbox, 0, 0) gridAppLayout.addWidget(display_FODImage, 1, 0) self.setLayout(gridAppLayout) pass
def initUI(self): #pyqt5初始化UI界面 self.setGeometry(100, 100, 700, 650) self.setWindowTitle('TestCams') self.setWindowIcon(QIcon('GCap.ico')) #左相机相关 self.btnOpen = QPushButton('打开左相机', self) self.combo = QComboBox(self) self.combo.addItem('25%') self.combo.addItem('50%') self.combo.addItem('100%') self.combo.setCurrentIndex(2) self.btnStart = QPushButton('开始采集', self) self.btnPause = QPushButton('暂停采集', self) self.btnSave = QPushButton('保存左图像', self) self.btnSetting = QPushButton('设置', self) self.btnClose = QPushButton('关闭左相机', self) self.combo.setEnabled(False) self.btnStart.setEnabled(False) self.btnPause.setEnabled(False) self.btnSave.setEnabled(False) self.btnSetting.setEnabled(False) self.btnClose.setEnabled(False) self.label = QLabel('Left', self) self.QScrollArea = QScrollArea(self) self.QScrollArea.setBackgroundRole(QPalette.Dark) self.QScrollArea.setWidget(self.label) self.winid = self.label.winId() # 获取label对象的句柄 self.label.setStyleSheet("QLabel{background:Dark;}") hbox = QHBoxLayout() hbox.addWidget(self.btnOpen) hbox.addWidget(self.combo) hbox.addWidget(self.btnStart) hbox.addWidget(self.btnPause) hbox.addWidget(self.btnSave) hbox.addWidget(self.btnSetting) hbox.addWidget(self.btnClose) hbox.addStretch(1) # 使用的信号槽机制连接触发事件 self.btnOpen.clicked.connect(self.openCam) self.combo.activated[str].connect(self.setSize) self.btnStart.clicked.connect(self.startGrab) self.btnPause.clicked.connect(self.pauseGrab) self.btnSave.clicked.connect(self.saveImage) self.btnSetting.clicked.connect(self.setting) self.btnClose.clicked.connect(self.closeCam) #右相机相关 self.btnOpen2 = QPushButton('打开右相机', self) self.combo2 = QComboBox(self) self.combo2.addItem('25%') self.combo2.addItem('50%') self.combo2.addItem('100%') self.combo2.setCurrentIndex(2) self.btnStart2 = QPushButton('开始采集', self) self.btnPause2 = QPushButton('暂停采集', self) self.btnSave2 = QPushButton('保存右图像', self) self.btnSetting2 = QPushButton('设置', self) self.btnClose2 = QPushButton('关闭右相机', self) self.combo2.setEnabled(False) self.btnStart2.setEnabled(False) self.btnPause2.setEnabled(False) self.btnSave2.setEnabled(False) self.btnSetting2.setEnabled(False) self.btnClose2.setEnabled(False) self.label2 = QLabel('Right', self) self.QScrollArea2 = QScrollArea(self) self.QScrollArea2.setBackgroundRole(QPalette.Dark) self.QScrollArea2.setWidget(self.label2) self.winid2 = self.label2.winId() # 获取label对象的句柄 self.label2.setStyleSheet("QLabel{background:Dark;}") hbox2 = QHBoxLayout() hbox2.addWidget(self.btnOpen2) hbox2.addWidget(self.combo2) hbox2.addWidget(self.btnStart2) hbox2.addWidget(self.btnPause2) hbox2.addWidget(self.btnSave2) hbox2.addWidget(self.btnSetting2) hbox2.addWidget(self.btnClose2) hbox2.addStretch(1) vbox2 = QVBoxLayout() vbox2.addLayout(hbox) vbox2.addWidget(self.QScrollArea) vbox2.addLayout(hbox2) vbox2.addWidget(self.QScrollArea2) self.setLayout(vbox2) # 使用的信号槽机制连接触发事件 self.btnOpen2.clicked.connect(self.openCam2) self.combo2.activated[str].connect(self.setSize) self.btnStart2.clicked.connect(self.startGrab2) self.btnPause2.clicked.connect(self.pauseGrab) self.btnSave2.clicked.connect(self.saveImage) self.btnSetting2.clicked.connect(self.setting) self.btnClose2.clicked.connect(self.closeCam) self.show()
def __init__(self): super().__init__() self.setWindowTitle("Schnitt Tisch") self.setWindowIcon(QIcon("src/main/icons/Icon.ico")) self.init_menu() self.file_box = InputFilesWidget("Eingabedateien", self) self.outputformat_box = OutputFormatWidget("Ausgabeformate", PAGE_SIZES.keys(), Defaults.ACTIVE_PAGE_SIZES, self) io_layout = QVBoxLayout() io_layout.addWidget(self.file_box, 3) io_layout.addWidget(self.outputformat_box, 1) io_widget = QWidget(self) io_widget.setMinimumWidth(250) io_widget.setMaximumWidth(400) io_widget.setLayout(io_layout) self.outputoptions_box = OutputOptionsWidget("Ausgabepfad", self) self.underlaysettings_box = UnderlaySettingsWidget( "Dokumenteinstellungen", self) self.gluemarks_box = GlueMarkWidget("Klebehilfen", self) settings_layout = QVBoxLayout() settings_layout.addWidget(self.outputoptions_box, 1) settings_layout.addWidget(self.underlaysettings_box, 2) settings_layout.addWidget(self.gluemarks_box, 5) settings_widget = QWidget(self) settings_widget.setLayout(settings_layout) settings_widget.setMaximumWidth(400) settings_widget.setMinimumWidth(350) preview_layout = QHBoxLayout() preview_widget_container = QWidget(self) preview_widget_container.setLayout(preview_layout) self.preview_widget = PreviewWidget("Vorschau", self) preview_layout.addWidget(self.preview_widget) action_button_layout = QHBoxLayout() site_link = QLabel('<a href="https://naehcram.de/">by Nähcram</a>') site_link.setTextFormat(Qt.RichText) site_link.setTextInteractionFlags(Qt.TextBrowserInteraction) site_link.setOpenExternalLinks(True) action_button_layout.addWidget(site_link, alignment=Qt.AlignLeft) self.export_button = QPushButton( QIcon(appctxt.get_resource("actions/save.png")), "Exportieren") self.loadSettings() self.file_box.file_list.currentRowChanged.connect(self.updatePreview) self.outputformat_box.outputformats_list.currentRowChanged.connect( self.updatePreview) self.underlaysettings_box.dpi.valueChanged.connect(self.updatePreview) self.underlaysettings_box.overlap.valueChanged.connect( self.updatePreview) self.gluemarks_box.font.currentTextChanged.connect(self.updatePreview) self.gluemarks_box.font_size.valueChanged.connect(self.updatePreview) self.gluemarks_box.marker_type_x.currentTextChanged.connect( self.updatePreview) self.gluemarks_box.marker_type_y.currentTextChanged.connect( self.updatePreview) self.gluemarks_box.marker_labels_x.currentTextChanged.connect( self.updatePreview) self.gluemarks_box.marker_labels_y.currentTextChanged.connect( self.updatePreview) self.gluemarks_box.marker_inner_size.sliderReleased.connect( self.updatePreview) self.gluemarks_box.marker_outer_size.sliderReleased.connect( self.updatePreview) self.export_button.clicked.connect(self.exportPdf) self.file_box.file_list.model().rowsInserted.connect( self.update_export_state) self.file_box.file_list.model().rowsRemoved.connect( self.update_export_state) self.update_export_state() self.export_button.setFixedWidth(200) action_button_layout.addWidget(self.export_button, alignment=Qt.AlignRight) action_button_widget = QWidget(self) action_button_widget.setLayout(action_button_layout) self.setCentralWidget(preview_widget_container) left_widget = QDockWidget() left_widget.setWidget(io_widget) left_widget.setFeatures(QDockWidget.NoDockWidgetFeatures) left_widget.setTitleBarWidget(QWidget(self)) right_widget = QDockWidget() right_widget.setWidget(settings_widget) right_widget.setFeatures(QDockWidget.NoDockWidgetFeatures) right_widget.setTitleBarWidget(QWidget(self)) bottom_widget = QDockWidget() bottom_widget.setWidget(action_button_widget) bottom_widget.setFeatures(QDockWidget.NoDockWidgetFeatures) bottom_widget.setTitleBarWidget(QWidget(self)) bottom_widget.setMaximumHeight(50) bottom_widget.setMinimumHeight(50) self.addDockWidget(Qt.LeftDockWidgetArea, left_widget) self.addDockWidget(Qt.RightDockWidgetArea, right_widget) self.addDockWidget(Qt.BottomDockWidgetArea, bottom_widget)
class Window(QMainWindow, Ui_MainWindow): def __init__(self): super(Window, self).__init__() self.setupUi(self) # -------setupUi------------ self.originImgFigure = ImgFigure() self.enhancedImgFigure = ImgFigure() self.originImgLayout = QHBoxLayout(self.originBox) self.enhancedImgLayout = QHBoxLayout(self.enhancedBox) self.originImgLayout.addWidget(self.originImgFigure) self.enhancedImgLayout.addWidget(self.enhancedImgFigure) self.statusBar.showMessage("请选择文件") self.progressBar = QProgressBar() self.statusBar.addPermanentWidget(self.progressBar) # self.progressBar.setVisible(False) self.showProgressBarAct.triggered['bool'].connect( self.progressBar.setVisible) self.showToolBarAct.setChecked(True) self.showProgressBarAct.setChecked(True) # -------setupUi------------ self.alpha = 1 self.gamma = 0.7 self.weigh = 1 self.settingWindow = SettingWindow() self.settingWindow.changeParameterSignal.connect(self.changeParameter) self._illuMapWindowFlag = False with open("./resource/config/.history", 'r') as fp: self.action1 = self.recentOpenMenu.addAction(fp.readline()) self.action1.triggered.connect( lambda: self.openImage(self.action1.text())) self.action2 = self.recentOpenMenu.addAction(fp.readline()) self.action2.triggered.connect( lambda: self.openImage(self.action2.text())) self.action3 = self.recentOpenMenu.addAction(fp.readline()) self.action3.triggered.connect( lambda: self.openImage(self.action3.text())) @pyqtSlot() def on_openAct_triggered(self): # imgPath = "./data/13.jpg" imgPath = QFileDialog.getOpenFileName( self, "请选择图片", "./data", "All Files (*)")[0] self.openImage(imgPath) def openImage(self, imgPath): self.imgPath = imgPath.strip() if imgPath != '': self.originImg = imread(self.imgPath) self.originImgFigure.axes.imshow(self.originImg) self.originImgFigure.draw() self.statusBar.showMessage("当前图片路径: " + self.imgPath) self.historyFile() self.progressBar.setValue(0) self.enhanceAct.setEnabled(True) else: QMessageBox.warning(self, "提示", "请重新选择图片") def historyFile(self): with open("./resource/config/.history", 'r+') as fp: history = fp.readlines() history = self.imgPath + '\n' + history[0] + history[1] fp.seek(0, 0) fp.truncate() fp.write(history) def changeParameter(self, alpha, gamma, weigh): self.alpha = alpha self.gamma = gamma self.weigh = weigh @pyqtSlot() def on_enhanceAct_triggered(self): self.progressBar.setValue(0) # self.progressBar.setVisible(True) self.workThread = WorkThread( self.imgPath, self.progressBar, self.alpha, self.gamma) self.workThread.start() self.workThread.finishSignal.connect(self.on_workThread_finishSignal) def on_workThread_finishSignal(self, T, R): self.T = T self.R = R self.statusBar.showMessage("当前图片路径: " + self.imgPath + " 图像增强成功") # self.imgFigure.T_axes.imshow(self.T, ) self.enhancedImgFigure.axes.imshow(self.R) self.progressBar.setValue(self.progressBar.maximum()) # self.progressBar.setVisible(False) self.enhancedImgFigure.draw() self.saveAct.setEnabled(True) self.saveAsAct.setEnabled(True) self.saveIlluMapAct.setEnabled(True) self.denoiseAct.setEnabled(True) self.illuMapAct.setEnabled(True) @pyqtSlot() def on_saveAsAct_triggered(self): savePath = QFileDialog.getSaveFileName( self, "请选择保存位置", "./data", "BMP格式 (*.bmp);;JPG格式 (*.jpg)")[0] if savePath != '': imsave(savePath, self.R) QMessageBox.about(self, "提示", "保存成功") else: QMessageBox.warning(self, "提示", "请重新选择保存位置") @pyqtSlot() def on_saveAct_triggered(self): savePath = self.imgPath imsave(savePath, self.R) QMessageBox.about(self, "提示", "保存成功") @pyqtSlot() def on_clearAct_triggered(self): self.originImgFigure.axes.cla() self.originImgFigure.draw() self.enhancedImgFigure.axes.cla() self.enhancedImgFigure.draw() self.enhanceAct.setEnabled(False) self.saveIlluMapAct.setEnabled(False) self.saveAsAct.setEnabled(False) self.saveAct.setEnabled(False) self.denoiseAct.setEnabled(False) @pyqtSlot() def on_quitAct_triggered(self): qApp.quit() @pyqtSlot() def on_denoiseAct_triggered(self): self.R = restoration.denoise_tv_bregman(self.R, self.weigh) self.enhancedImgFigure.axes.imshow(self.R) self.enhancedImgFigure.draw() QMessageBox.about(self, "提示", "去噪成功") @pyqtSlot() def on_saveIlluMapAct_triggered(self): savePath = QFileDialog.getSaveFileName( self, "请选择保存位置", "./data", "BMP格式 (*.bmp);;JPG格式 (*.jpg)")[0] if savePath != '': if self._illuMapWindowFlag == True: color = self.illuMapWindow.colorComboBox.currentText() color = self.illuMapWindow.colorMap[color] imsave(savePath, self.T, cmap=get_cmap(color)) else: imsave(savePath, self.T, cmap=get_cmap('OrRd_r')) QMessageBox.about(self, "提示", "保存成功") else: QMessageBox.warning(self, "提示", "请重新选择保存位置") # -------------其他界面------------- @pyqtSlot() def on_aboutAct_triggered(self): self.aboutWindow = AboutWindow() self.aboutWindow.show() @pyqtSlot() def on_illuMapAct_triggered(self): self.illuMapWindow = IlluMapWindow() self._illuMapWindowFlag = True self.illuMapWindow.saveIlluMapBtn.clicked.connect( self.on_saveIlluMapAct_triggered) self.illuMapWindow.confirmBtn.clicked.connect( self.on_confirmBtn_triggered) self.illuMapWindow.figure.axes.imshow(self.T, cmap=get_cmap('OrRd_r')) self.illuMapWindow.figure.draw() self.illuMapWindow.show() def on_confirmBtn_triggered(self): color = self.illuMapWindow.colorComboBox.currentText() color = self.illuMapWindow.colorMap[color] self.illuMapWindow.figure.axes.imshow(self.T, cmap=get_cmap(color)) self.illuMapWindow.figure.draw() @pyqtSlot() def on_settingAct_triggered(self): self.settingWindow.smoothnessSlider.setValue( int(401 - 100 * self.alpha)) self.settingWindow.brightnessSlider.setValue(int(100 * self.gamma)) self.settingWindow.denosieSlider.setValue(int(100*self.weigh)) self.settingWindow.show()
def __init__(self, title: str, *args, **kwargs): super().__init__(title, *args, **kwargs) layout = QGridLayout() self.setLayout(layout) font_layout = QHBoxLayout(self) self.font_size = QSpinBox(self) self.font_size.setMinimum(5) self.font_size.setMaximum(100) self.font_size.setValue(Defaults.FONT_SIZE) self.font = QComboBox(self) for font in sorted(font_manager.ttflist, key=lambda x: x.face.name): self.font.addItem( QIcon(appctxt.get_resource("files/font.png")), font.face.name.decode("ascii"), font, ) font_layout.addWidget(self.font, 3) font_layout.addWidget(self.font_size, 1) font_layout.setContentsMargins(0, 0, 0, 0) font_widget = QWidget(self) font_widget.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Minimum) font_widget.setMaximumHeight(self.font.height()) font_widget.setContentsMargins(0, 0, 0, 0) font_widget.setLayout(font_layout) layout.addWidget(QLabel("Schrift", self), 0, 0) layout.addWidget(font_widget, 0, 1, 1, 2) layout.addWidget(QLabel("Marker", self), 4, 0) self.marker_type_x = QComboBox(self) self.marker_type_y = QComboBox(self) for name, marker in MARKERS.items(): marker_icon = QIcon(appctxt.get_resource(f"markers/{name}.png")) self.marker_type_x.addItem(marker_icon, name, marker) self.marker_type_y.addItem(marker_icon, name, marker) layout.addWidget(self.marker_type_x, 4, 1) layout.addWidget(self.marker_type_y, 4, 2) layout.addWidget(QLabel("Beschriftungen", self), 5, 0) self.marker_labels_x = QComboBox(self) self.marker_labels_y = QComboBox(self) for name, marker_set in MARKER_SETS.items(): label_icon = QIcon(appctxt.get_resource(f"labels/{name}.png")) self.marker_labels_x.addItem(label_icon, name, marker_set) self.marker_labels_y.addItem(label_icon, name, marker_set) layout.addWidget(self.marker_labels_x, 5, 1) layout.addWidget(self.marker_labels_y, 5, 2) layout.addWidget(QLabel("Größe innen", self), 6, 0) self.marker_inner_size = QSlider(Qt.Horizontal, self) self.marker_inner_size.setMinimum(10) self.marker_inner_size.setMaximum(240) self.marker_inner_size.valueChanged.connect(self.validate_outer_size) marker_inner_size_label = QLabel(self) self.marker_inner_size.valueChanged.connect( lambda x: marker_inner_size_label.setText(f"{x} pt")) layout.addWidget(self.marker_inner_size, 6, 1) layout.addWidget(marker_inner_size_label, 6, 2) layout.addWidget(QLabel("Größe außen", self), 7, 0) self.marker_outer_size = QSlider(Qt.Horizontal, self) self.marker_outer_size.setMinimum(15) self.marker_outer_size.setMaximum(250) self.marker_outer_size.valueChanged.connect(self.validate_inner_size) marker_outer_size_label = QLabel(self) self.marker_outer_size.valueChanged.connect( lambda x: marker_outer_size_label.setText(f"{x} pt")) layout.addWidget(self.marker_outer_size, 7, 1) layout.addWidget(marker_outer_size_label, 7, 2) self.marker_inner_size.setValue(35) self.marker_outer_size.setValue(45)
def __init__(self, parent=None): super(Window, self).__init__(parent) self.setWindowTitle('Feedback Interactive Analysis') self.enzyme = E_PIP5K self.f_type = FEEDBACK_POSITIVE self.f_carry = 1 self.f_multi = 1 self.f_hill = 1 self.f_sub = I_PIP2 self.carry_factor = 1 self.lipids_to_analyze = [I_PIP2] self.mutant_enzyme = E_NONE self.enz_box = None self.show_standard = True # a figure instance to plot on self.figure = plt.figure() # this is the Canvas Widget that displays the `figure` self.canvas = FigureCanvas(self.figure) # it takes the Canvas widget and a parent self.toolbar = NavigationToolbar(self.canvas, self) grid = QGridLayout() widget = QWidget(self) # central widget s_box = QHBoxLayout() substrate_group = QButtonGroup(widget) # Substrate group s_box.addStretch() s_box.setContentsMargins(1, 15, 1, 1) s_box.addWidget(QLabel("Feedback From")) self.substrates = [] for l in LIPID_NAMES: b = QRadioButton(l, self) b.setObjectName(l) b.setCheckable(True) if l == L_PIP2: b.setChecked(True) b.clicked.connect(partial(self.substrate_clicked, l)) self.substrates.append(b) substrate_group.addButton(b) s_box.addWidget(b) display_box = QVBoxLayout() display_box.setContentsMargins(30, 1, 1, 1) display_box.addStretch() self.display_lipids = [] for l in LIPID_NAMES: b = QCheckBox(l) b.setObjectName(l) b.setCheckable(True) if l == L_PIP2: b.setChecked(True) b.clicked.connect(partial(self.on_display_lipid_changed, l)) self.display_lipids.append(b) display_box.addWidget(b) display_box.addStretch() feedback_group = QButtonGroup(widget) # Number group f_box = QVBoxLayout() f_box.setContentsMargins(30, 1, 1, 1) f_box.addStretch() f_box.addWidget(QLabel("Feedback Type")) self.b_pos_feed = QRadioButton("Positive", self) self.b_pos_feed.setObjectName("p") self.b_pos_feed.setCheckable(True) self.b_pos_feed.setChecked(True) self.b_pos_feed.clicked.connect(partial(self.feedback_changed, "p")) feedback_group.addButton(self.b_pos_feed) f_box.addWidget(self.b_pos_feed) self.b_neg_feed = QRadioButton("Negative", self) self.b_neg_feed.setObjectName("n") self.b_neg_feed.setCheckable(True) self.b_neg_feed.clicked.connect(partial(self.feedback_changed, "n")) feedback_group.addButton(self.b_neg_feed) f_box.addWidget(self.b_neg_feed) f_box.addStretch() a_box = QVBoxLayout() a_box.setContentsMargins(30, 30, 30, 15) a_slider = QSlider(Qt.Horizontal, self) a_slider.setMinimum(1) a_slider.setMaximum(100) a_slider.setTickInterval(1) self.a_label = QLabel("Multiplication Factor : 1") a_slider.valueChanged[int].connect(self.multi_changed) a_slider.setValue(1) a_box.addWidget(self.a_label) a_box.addWidget(a_slider) c_box = QVBoxLayout() c_box.setContentsMargins(30, 0, 30, 15) c_slider = QSlider(Qt.Horizontal, self) c_slider.setMinimum(1) c_slider.setMaximum(10) c_slider.setTickInterval(1) self.c_label = QLabel("Carrying Capacity : 1") c_slider.valueChanged[int].connect(self.carry_changed) c_slider.setValue(1) c_sub_box = QHBoxLayout() c_sub_box.addWidget(self.c_label) carry_factor = QComboBox(self) for c in CARRY_FACTORS: carry_factor.addItem(c) carry_factor.activated[str].connect(self.on_carry_factor) c_sub_box.addWidget(carry_factor) c_sub_box.addStretch() c_box.addLayout(c_sub_box, 1) c_box.addWidget(c_slider) h_box = QVBoxLayout() h_box.setContentsMargins(30, 0, 30, 15) h_slider = QSlider(Qt.Horizontal, self) h_slider.setMinimum(0) h_slider.setMaximum(5) h_slider.setTickInterval(1) self.h_label = QLabel("Hill Coefficient") h_slider.valueChanged[int].connect(self.hill_changed) h_slider.setValue(1) h_box.addWidget(self.h_label) h_box.addWidget(h_slider) e_box = QVBoxLayout() e_box.setContentsMargins(30, 1, 1, 1) e_box.addStretch() e_box.addWidget(QLabel("Feedback to")) enz_box = QComboBox(self) for e in ENZYME_NAMES: enz_box.addItem(e) enz_box.activated[str].connect(self.on_enzyme_selection) e_box.addWidget(enz_box) e_box.addStretch() hill_box = QHBoxLayout() hill_box.addLayout(h_box) hill_box.addWidget(self.toggle_plot) grid.addWidget(self.toolbar, 1, 0) grid.addWidget(self.canvas, 2, 0) grid.addLayout(display_box, 1, 1, 2, 2) grid.addLayout(s_box, 4, 0) grid.addLayout(f_box, 5, 1, 2, 2) grid.addLayout(self.mutant_list, 4, 1) grid.addLayout(a_box, 5, 0) grid.addLayout(c_box, 6, 0) grid.addLayout(hill_box, 7, 0) grid.addLayout(e_box, 7, 1) self.setLayout(grid)
def __init__(self, main_window): super(View, self).__init__() self.main_window = main_window label_path1 = QLabel("Copy till here: ") # Initial Layout # Edit Box self.search_box = QLineEdit() self.search_box.textChanged.connect( partial(setattr, self, "folderpath")) # Push button go_back_button = QPushButton('Back') go_back_button.setToolTip('Show List of items') # Search and button Layout grouping horizontal_groupbox = QGroupBox() layout = QHBoxLayout() layout.addWidget(label_path1) layout.addWidget(self.search_box) layout.addWidget(go_back_button) horizontal_groupbox.setLayout(layout) # Central Layout for data view # Tree View data_groupBox = QGroupBox("Android Directory") self.dataView = QTreeView() self.dataView.setRootIsDecorated(False) self.dataView.setAlternatingRowColors(True) # self.dataView.setSortingEnabled(True) self.dataView.setEditTriggers(QAbstractItemView.NoEditTriggers) data_layout = QHBoxLayout() data_layout.addWidget(self.dataView) data_groupBox.setLayout(data_layout) # Footer Layout label_path2 = QLabel("PATH:") label_path2.setStyleSheet("border: .5px solid black; max-width:50px;") self.path_label_name = QLabel() self.path_label_name.setStyleSheet( "border: 1px solid black; min-width:450px;") self.path_label_name.setWordWrap(True) pull_button = QPushButton("Pull") pull_button.setToolTip("Push this path to desire folder") pull_button.setStyleSheet("min-width: 70px;min-height:15px") footer_groupbox = QGroupBox() footer_layout = QHBoxLayout() footer_layout.addWidget(label_path2) footer_layout.addWidget(self.path_label_name) footer_layout.addWidget(pull_button, alignment=Qt.AlignCenter) footer_groupbox.setLayout(footer_layout) main_layout = QVBoxLayout() main_layout.addWidget(horizontal_groupbox) main_layout.addWidget(data_groupBox) main_layout.addWidget(footer_groupbox) main_window.setLayout(main_layout) # Signals to button for do event and then show in view go_back_button.clicked.connect(self.go_back_signal) self.dataView.clicked.connect(self.single_click_event) self.dataView.doubleClicked.connect(self.double_click_event) pull_button.clicked.connect(self.pull_file_signal)
def __init__(self, parent=None): # pylint: disable=too-many-statements super(HooksPanel, self).__init__(parent=parent) self._app_window = parent if self._app_window.dwarf is None: print('HooksPanel created before Dwarf exists') return # connect to dwarf self._app_window.dwarf.onAddJavaHook.connect(self._on_add_hook) self._app_window.dwarf.onAddNativeHook.connect(self._on_add_hook) self._app_window.dwarf.onAddNativeOnLoadHook.connect(self._on_add_hook) self._app_window.dwarf.onAddJavaOnLoadHook.connect(self._on_add_hook) self._app_window.dwarf.onHitNativeOnLoad.connect( self._on_hit_native_on_load) self._app_window.dwarf.onHitJavaOnLoad.connect( self._on_hit_java_on_load) self._app_window.dwarf.onDeleteHook.connect(self._on_hook_deleted) self._hooks_list = DwarfListView() self._hooks_list.doubleClicked.connect(self._on_dblclicked) self._hooks_list.setContextMenuPolicy(Qt.CustomContextMenu) self._hooks_list.customContextMenuRequested.connect( self._on_context_menu) self._hooks_model = QStandardItemModel(0, 5) self._hooks_model.setHeaderData(0, Qt.Horizontal, 'Address') self._hooks_model.setHeaderData(1, Qt.Horizontal, 'T') self._hooks_model.setHeaderData(1, Qt.Horizontal, Qt.AlignCenter, Qt.TextAlignmentRole) self._hooks_model.setHeaderData(2, Qt.Horizontal, 'Input') self._hooks_model.setHeaderData(3, Qt.Horizontal, '{}') self._hooks_model.setHeaderData(3, Qt.Horizontal, Qt.AlignCenter, Qt.TextAlignmentRole) self._hooks_model.setHeaderData(4, Qt.Horizontal, '<>') self._hooks_model.setHeaderData(4, Qt.Horizontal, Qt.AlignCenter, Qt.TextAlignmentRole) self._hooks_list.setModel(self._hooks_model) self._hooks_list.header().setStretchLastSection(False) self._hooks_list.header().setSectionResizeMode( 0, QHeaderView.ResizeToContents | QHeaderView.Interactive) self._hooks_list.header().setSectionResizeMode( 1, QHeaderView.ResizeToContents) self._hooks_list.header().setSectionResizeMode(2, QHeaderView.Stretch) self._hooks_list.header().setSectionResizeMode( 3, QHeaderView.ResizeToContents) self._hooks_list.header().setSectionResizeMode( 4, QHeaderView.ResizeToContents) v_box = QVBoxLayout(self) v_box.setContentsMargins(0, 0, 0, 0) v_box.addWidget(self._hooks_list) #header = QHeaderView(Qt.Horizontal, self) h_box = QHBoxLayout() h_box.setContentsMargins(5, 2, 5, 5) self.btn1 = QPushButton( QIcon(utils.resource_path('assets/icons/plus.svg')), '') self.btn1.setFixedSize(20, 20) self.btn1.clicked.connect(self._on_additem_clicked) btn2 = QPushButton(QIcon(utils.resource_path('assets/icons/dash.svg')), '') btn2.setFixedSize(20, 20) btn2.clicked.connect(self.delete_items) btn3 = QPushButton( QIcon(utils.resource_path('assets/icons/trashcan.svg')), '') btn3.setFixedSize(20, 20) btn3.clicked.connect(self.clear_list) h_box.addWidget(self.btn1) h_box.addWidget(btn2) h_box.addSpacerItem( QSpacerItem(0, 0, QSizePolicy.Expanding, QSizePolicy.Preferred)) h_box.addWidget(btn3) # header.setLayout(h_box) # header.setFixedHeight(25) # v_box.addWidget(header) v_box.addLayout(h_box) self.setLayout(v_box) self._bold_font = QFont(self._hooks_list.font()) self._bold_font.setBold(True) shortcut_addnative = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_N), self._app_window, self._on_addnative) shortcut_addnative.setAutoRepeat(False) shortcut_addjava = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_J), self._app_window, self._on_addjava) shortcut_addjava.setAutoRepeat(False) shortcut_add_native_on_load = QShortcut( QKeySequence(Qt.CTRL + Qt.Key_O), self._app_window, self._on_add_native_on_load) shortcut_add_native_on_load.setAutoRepeat(False) # new menu self.new_menu = QMenu('New') self.new_menu.addAction('Native', self._on_addnative) self.new_menu.addAction('Java', self._on_addjava) self.new_menu.addAction('Module loading', self._on_add_native_on_load)
class DataEntryForm(QWidget): def __init__(self): super().__init__() self.items = 0 # Data self._data = {} # Left Side self.table = QTableWidget() self.table.setColumnCount(2) self.table.setHorizontalHeaderLabels(('Description', 'Price')) self.table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) self.layoutRight = QVBoxLayout() # Chart Widget self.chartView = QChartView() self.chartView.setRenderHint(QPainter.Antialiasing) self.lineEditDescription = QLineEdit() self.lineEditPrice = QLineEdit() self.buttonAdd = QPushButton('Add Expense') self.buttonClear = QPushButton('Clear All') self.buttonPlot = QPushButton('Pie Chart') self.buttonAdd.setEnabled(False) self.layoutRight.setSpacing(10) self.layoutRight.addWidget(QLabel('Description')) self.layoutRight.addWidget(self.lineEditDescription) self.layoutRight.addWidget(QLabel('Price')) self.layoutRight.addWidget(self.lineEditPrice) self.layoutRight.addWidget(self.buttonAdd) self.layoutRight.addWidget(self.buttonPlot) self.layoutRight.addWidget(self.chartView) self.layoutRight.addWidget(self.buttonClear) self.layout = QHBoxLayout() self.layout.addWidget(self.table, 50) self.layout.addLayout(self.layoutRight, 50) self.setLayout(self.layout) self.buttonClear.clicked.connect(self.reset_table) self.buttonPlot.clicked.connect(self.graph_chart) self.buttonAdd.clicked.connect(self.add_entry) self.lineEditDescription.textChanged[str].connect(self.check_disable) self.lineEditPrice.textChanged[str].connect(self.check_disable) self.fill_table() # Fill Table def fill_table(self, data=None): data = self._data if not data else data for desc, price in data.items(): descItem = QTableWidgetItem(desc) priceItem = QTableWidgetItem('${0:.2f}'.format(price)) priceItem.setTextAlignment(Qt.AlignRight | Qt.AlignCenter) self.table.insertRow(self.items) self.table.setItem(self.items, 0, descItem) self.table.setItem(self.items, 1, priceItem) self.items += 1 # Add Entry def add_entry(self): desc = self.lineEditDescription.text() price = self.lineEditPrice.text() try: descItem = QTableWidgetItem(desc) priceItem = QTableWidgetItem('${0:.2f}'.format(float(price))) priceItem.setTextAlignment(Qt.AlignRight | Qt.AlignCenter) self.table.insertRow(self.items) self.table.setItem(self.items, 0, descItem) self.table.setItem(self.items, 1, priceItem) self.items += 1 self.lineEditDescription.setText('') self.lineEditPrice.setText('') except ValueError: pass # Check If Buttons Are Disabled def check_disable(self): if self.lineEditDescription.text() and self.lineEditPrice.text(): self.buttonAdd.setEnabled(True) else: self.buttonAdd.setEnabled(False) # Reset Table def reset_table(self): self.table.setRowCount(0) self.items = 0 chart = QChart() self.chartView.setChart(chart) # Graph Data Chart def graph_chart(self): series = QPieSeries() for i in range(self.table.rowCount()): text = self.table.item(i, 0).text() val = float(self.table.item(i, 1).text().replace('$', '')) series.append(text, val) chart = QChart() chart.addSeries(series) chart.legend().setAlignment(Qt.AlignTop) self.chartView.setChart(chart)
class ParamWidget(QTableWidget): def __init__(self, layout): super().__init__() self.layout=layout self.setColumnCount(2) self.setHorizontalHeaderLabels(['Param', 'Value']) self.verticalHeader().setVisible(False) self.setMaximumWidth(300) #self.itemChanged.connect(self.item_changed) self.clicked_item=None self.previous_content=None #self.itemClicked.connect(self.item_clicked) self.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.contextMenu=None self.customContextMenuRequested.connect(self.RightClickMenu) def RightClickMenu(self, point): self.contextMenu=QParamsContextMenu(point, self.window()) def actualize(self, params): item = self.window().tree_widget.active_item if item is not None: self.clear() self.setHorizontalHeaderLabels(['Param', 'Value']) self.setRowCount(len(params.keys())) for i,(k, v) in enumerate(params.items()): key = QTableWidgetItem() key.setText(k) self.setItem(i,0,key) value = QTableWidgetItem() value.setText(str(v)) self.setItem(i,1,value) def mousePressEvent(self, event): if event.button()==QtCore.Qt.RightButton: tree = self.window().tree_widget if hasattr(tree, "active_item") and tree.active_item is not None: current_id=self.window().tree_widget.active_item.data(0,0) if current_id is not None: pass def contextMenuEvent(self, event): current_id=self.window().tree_widget.active_item.data(0,0) if current_id is not None: self.menu = QMenu(self) addParamAction = self.menu.addAction("add new parameter") action = self.menu.exec_(self.mapToGlobal(event.pos())) if action == addParamAction: self.new_param_menu() self.menu.close() def new_param_menu(self): self.new_param_window=QWidget(self.window()) self.new_param_layout=QHBoxLayout(self.new_param_window) self.name_layout=QVBoxLayout(self.new_param_window) self.name_text=QLabel('Name') self.name_text.setStyleSheet("QLabel { background-color : white; color : black; }") self.name_layout.addWidget(self.name_text) self.name_box=QLineEdit(self.new_param_window) self.name_layout.addWidget(self.name_box) self.new_param_layout.addLayout(self.name_layout) self.new_param_window.setLayout(self.new_param_layout) self.new_param_window.setGeometry(QRect(500, 250, 300, 100)) self.param_layout=QVBoxLayout(self.new_param_window) self.param_text=QLabel('param') self.param_text.setStyleSheet("QLabel { background-color : white; color : black; }") self.param_layout.addWidget(self.param_text) self.param_box=QLineEdit(self.new_param_window) self.param_layout.addWidget(self.param_box) self.new_param_layout.addLayout(self.param_layout) self.button=QPushButton() self.button.setText('add new parameter') self.button.clicked.connect(self.get_new_param) self.new_param_layout.addWidget(self.button) self.new_param_window.show() def get_new_param(self): name, param = self.name_box.text(), self.param_box.text() current_id=self.window().tree_widget.active_item.data(0,0) date=self.window().tree_widget.active_item.data(2,0) params=PlotWidget.get_params_from_date_and_id(date, current_id) params[name]=param folder=PlotWidget.get_folder_from_date(date) if not '{:}.h5'.format(current_id) in os.listdir(folder): print('the h5 file is nowhere to be found') else: with h5py.File(os.path.join(folder, '{:}.h5'.format(current_id)), 'r+') as f: data=f['data'] for key, val in params.items(): if val is None: data.attrs[key]='NONE' elif isinstance(val, dict): data.attrs[key]=json.dumps(val) else: data.attrs[key]=val self.new_param_window.close()
def mutant_list(self): e_box = QHBoxLayout() e_box.setContentsMargins(30, 1, 1, 1) e_box.addStretch() e_box.addWidget(QLabel("Mutant Enzyme : ")) self.enz_box = QComboBox(self) self.enz_box.addItem(E_NONE) for e in ENZYME_NAMES: self.enz_box.addItem(e) self.enz_box.activated[str].connect(self.on_mutant_selection) e_box.addWidget(self.enz_box) e_box.addStretch() return e_box
def __init__(self, model: MultipleSelectComponent, callback): super(MultipleSelectQt, self).__init__(model.label if model.label else None) self.setStyleSheet(css.GROUP_BOX) self.model = model self._layout = QGridLayout() self.setLayout(self._layout) if model.max_width > 0: self.setMaximumWidth(model.max_width) if model.max_height > 0: self.setMaximumHeight(model.max_height) if model.label: line = 1 pre_label = QLabel() self.layout().addWidget(pre_label, 0, 1) else: line = 0 col = 0 pixmap_help = QPixmap() for op in model.options: # loads the help icon if at least one option has a tooltip if op.tooltip: try: pixmap_help = QIcon(resource.get_path('img/about.svg')).pixmap(QSize(16, 16)) except: traceback.print_exc() break for op in model.options: comp = CheckboxQt(op, model, callback) if model.values and op in model.values: self.value = comp comp.setChecked(True) widget = QWidget() widget.setLayout(QHBoxLayout()) widget.layout().addWidget(comp) if op.tooltip: help_icon = QLabel() help_icon.setPixmap(pixmap_help) help_icon.setToolTip(op.tooltip) widget.layout().addWidget(help_icon) self._layout.addWidget(widget, line, col) if col + 1 == self.model.max_per_line: line += 1 col = 0 else: col += 1 if model.label: pos_label = QLabel() self.layout().addWidget(pos_label, line + 1, 1)
class NewFilterWidget(QGroupBox): def __init__(self, parent, filter_widget): super().__init__(parent=parent) self.parent=parent self.filter_widget=filter_widget self.global_layout=QHBoxLayout() self.setLayout(self.global_layout) self.item1=QComboBox() for column in Filter.columns: self.item1.addItem(column) self.global_layout.addWidget(self.item1) self.item2=QComboBox() for operation in ['<','<=','=','>','>=']: self.item2.addItem(operation) self.global_layout.addWidget(self.item2) self.item3=QLineEdit() self.global_layout.addWidget(self.item3) self.calendar=QCalendarWidget() self.global_layout.addWidget(self.calendar) self.calendar.hide() self.remove_button=QToolButton() folder=os.path.split(inspect.getfile(Curve))[0] self.remove_button.setIcon(QtGui.QIcon(os.path.join(folder,'minus.png'))) self.global_layout.addWidget(self.remove_button) self.remove_button.clicked.connect(self.remove) self.activate_box = QCheckBox('activate') self.global_layout.addWidget(self.activate_box) self.item1.currentTextChanged.connect(self.columnchanged) def columnchanged(self, text): if text=='date': self.item3.hide() self.calendar.show() self.item2.clear() for operation in ['<','<=','=','>','>=']: self.item2.addItem(operation) elif text in ['name', 'project', 'sample']: self.calendar.hide() self.item2.clear() self.item3.show() for operation in ['=', 'contains']: self.item2.addItem(operation) else: self.calendar.hide() self.item3.show() self.item2.clear() for operation in ['<','<=','=','>','>=']: self.item2.addItem(operation) def remove(self): for widget in [self.remove_button,self.item1, self.item2, self.item3, self.activate_box]: widget.hide() self.global_layout.removeWidget(widget) self.filter_widget.remove_filter(self) self.hide() def get_query(self): if self.item1.currentText() in ['id', 'parent', 'sample', 'project', 'name']: return Filter(self.item1.currentText(), self.item2.currentText(), self.item3.text()) if self.item1.currentText()=='date': date=self.calendar.selectedDate() if self.item2.currentText() in ['<','>=']: t=datetime(date.year(), date.month(), date.day()).timestamp() return Filter(self.item1.currentText(), self.item2.currentText(), str(t)) elif self.item2.currentText() in ['>','<=']: t=datetime(date.year(), date.month(), date.day()+1).timestamp() return Filter(self.item1.currentText(), self.item2.currentText(), str(t)) elif self.item2.currentText()=='=': t1=datetime(date.year(), date.month(), date.day()).timestamp() t2=datetime(date.year(), date.month(), date.day()+1).timestamp() return [Filter(self.item1.currentText(), '>', str(t1)), Filter(self.item1.currentText(), '<', str(t2))]
class RunBackupWidget(QWidget): def __init__(self): super().__init__() self.most_recent_backup = None self.top_level_layout = QVBoxLayout() self.setLayout(self.top_level_layout) # controls across the top self.controls_widget = QWidget() self.controls_layout = QHBoxLayout() self.controls_widget.setLayout(self.controls_layout) self.start_button = QPushButton("Start") self.start_button.clicked.connect(self.start) self.controls_layout.addWidget(self.start_button) self.stop_button = QPushButton("Stop") self.stop_button.clicked.connect(self.stop) self.controls_layout.addWidget(self.stop_button) self.controls_layout.addWidget(QLabel("Next backup:")) self.countdown_text = QLabel() self.controls_layout.addWidget(self.countdown_text) self.controls_layout.addStretch() # status self.status_widget = QGroupBox("Status") self.status_layout = QHBoxLayout() self.status_widget.setLayout(self.status_layout) self.backup_status = {} self.backup_engines = {} self.run_all = RunAll(self) for backup_type in BackupTypes: self.backup_status[backup_type] = BackupWidget(backup_type) display_boxes = self.backup_status[backup_type].display_boxes self.backup_engines[backup_type] = backup_classes[backup_type]( UITypes.gui, display_boxes[DisplayTypes.log].append_text, display_boxes[DisplayTypes.warnings].append_text, display_boxes[DisplayTypes.errors].append_text ) self.status_layout.addWidget(self.backup_status[backup_type]) # add all the widgets to the top level layout self.top_level_layout.addWidget(self.controls_widget) self.top_level_layout.addWidget(self.status_widget) self.restore_state() def start(self): self.most_recent_backup = int(round(datetime.now().timestamp())) # set after all runs successfully finished preferences = get_gui_preferences() if preferences.backup_directory is None: log.error("backup directory not set") else: self.run_all.start() def stop(self): for backup_type in self.backup_engines: self.backup_engines[backup_type].terminate() def get_layout_key(self, backup_type: BackupTypes, display_type: DisplayTypes, height_width: str): return f"{backup_type.name}_{display_type.name}_{height_width}" def save_state(self): preferences = get_gui_preferences() for backup_type in BackupTypes: for display_type in DisplayTypes: setattr(preferences, self.get_layout_key(backup_type, display_type, "height"), self.backup_status[backup_type].display_boxes[display_type].height()) setattr(preferences, self.get_layout_key(backup_type, display_type, "width"), self.backup_status[backup_type].display_boxes[display_type].width()) preferences.most_recent_backup = self.most_recent_backup def restore_state(self): preferences = get_gui_preferences() for backup_type in BackupTypes: for display_type in DisplayTypes: if (height := getattr(preferences, self.get_layout_key(backup_type, display_type, "height"), 0)) is not None: height = int(height) if (width := getattr(preferences, self.get_layout_key(backup_type, display_type, "width"), 0)) is not None: width = int(width) # make sure all windows come up as visible, even if not set or the user has reduced them to zero if height is not None and height > 0 and width is not None and width > 0: self.backup_status[backup_type].display_boxes[display_type].resize(width, height)
class WindowWidget(QWidget): spinbox_changed = QtCore.Signal() row_changed = QtCore.Signal() def __init__(self): super().__init__() self.layout_global = QHBoxLayout() self.layout_left = QVBoxLayout() self.layout_center = QVBoxLayout() self.layout_right = QVBoxLayout() self.layout_top = QHBoxLayout() self.layout_bottom = QHBoxLayout() self.plot_widget = PlotWidget() self.add_filters = QCheckBox('add_filters') self.show_filters = QCheckBox('Show filters') self.show_filters.hide() self.filter_widget = FilterWidget(self) self.layout_show_first = QHBoxLayout() self.layout_global.addWidget(self.filter_widget) self.layout_global.addLayout(self.layout_left) self.layout_global.addLayout(self.layout_center) self.layout_global.addLayout(self.layout_right) self.layout_left.addLayout(self.layout_show_first) self.spinbox_widget = SpinBoxWidget() self.tree_widget = TreeWidget() self.plot_options = plotOptions(self.tree_widget) self.param_widget = ParamWidget(self.layout) self.layout_right.addWidget(self.param_widget) self.show_first_label = QLabel('show first') self.compute_button = QPushButton('update') self.layout_show_first.addWidget(self.show_first_label) self.layout_show_first.addWidget(self.spinbox_widget) self.layout_left.addWidget(self.tree_widget) self.layout_show_first.addWidget(self.add_filters) self.layout_show_first.addWidget(self.show_filters) self.layout_show_first.addWidget(self.compute_button) self.layout_center.addLayout(self.layout_top) self.layout_top.addWidget(self.plot_options) self.layout_center.addWidget(self.plot_widget) self.directory_button = DirectoryButton(self.tree_widget) self.comment=Comment(self.tree_widget) self.layout_center.addWidget(self.comment) self.layout_center.addLayout(self.layout_bottom) self.layout_bottom.addWidget(self.directory_button) self.plot_figure_button = PlotFigureButton(self.tree_widget, self.plot_widget) self.layout_bottom.addWidget(self.plot_figure_button) self.save_button = SaveButton(self.tree_widget, self.comment) self.layout_bottom.addWidget(self.save_button) self.compute_button.clicked.connect(self.tree_widget.compute) self.row_changed.connect(self.plot_widget.plot) self.changing_tree=False self.spinbox_widget.setValue(20) self.setLayout(self.layout_global) self.setGeometry(QRect(0, 0, 1000, 600)) self.setMaximumHeight(600) self.show() self.move(0,0)
def _init_ui(self, txt_width): lbl_int = QLabel(self._config_item.tag()) lbl_int.setFixedWidth(self.LABEL_WIDTH) self._txt_value = QLineEdit() self._txt_value.setFixedWidth(txt_width) hbox = QHBoxLayout() hbox.setContentsMargins(0, 0, 0, 0) hbox.addWidget(lbl_int) hbox.addWidget(self._txt_value) hbox.addWidget(QLabel(self._config_item.units())) hbox.addStretch() self.setLayout(hbox)
def initUI(self): self.setGeometry(300, 300, 600, 350) self.setWindowTitle('SaveScoreProgram') vbox = QVBoxLayout() #1st QHBoxLayout nameLabel = QLabel("Name: ") self.nameEdit = QLineEdit(self) ageLabel = QLabel("Age: ") self.ageEdit = QLineEdit(self) scoreLabel = QLabel("Score: ") self.scoreEdit = QLineEdit(self) firsthbox = QHBoxLayout() firsthbox.addStretch(1) firsthbox.addWidget(nameLabel) firsthbox.addWidget(self.nameEdit) firsthbox.addWidget(ageLabel) firsthbox.addWidget(self.ageEdit) firsthbox.addWidget(scoreLabel) firsthbox.addWidget(self.scoreEdit) vbox.addLayout(firsthbox) #2nd QHBoxLayout amountLabel = QLabel("Amount: ") self.amountEdit = QLineEdit(self) keyLabel = QLabel("key: ") self.keyCombo = QComboBox(self) self.keyCombo.addItem("Name") self.keyCombo.addItem("Age") self.keyCombo.addItem("Score") secondbox = QHBoxLayout() secondbox.addStretch(1) secondbox.addWidget(amountLabel) secondbox.addWidget(self.amountEdit) secondbox.addWidget(keyLabel) secondbox.addWidget(self.keyCombo) vbox.addLayout(secondbox) #3th QHBoxLayout addButton = QPushButton("Add") delButton = QPushButton("Del") findButton = QPushButton("Find") incButton = QPushButton("Inc") showButton = QPushButton("show") thirdBox = QHBoxLayout() thirdBox.addStretch(1) thirdBox.addWidget(addButton) thirdBox.addWidget(delButton) thirdBox.addWidget(findButton) thirdBox.addWidget(incButton) thirdBox.addWidget(showButton) vbox.addLayout(thirdBox) #4th QHBoxLayout resultLabel = QLabel("Result:") fourthbox = QHBoxLayout() fourthbox.addWidget(resultLabel) vbox.addLayout(fourthbox) #5th QHBoxLayout self.resultTextEdit = QTextEdit(self) fifthbox = QHBoxLayout() fifthbox.addWidget(self.resultTextEdit) vbox.addLayout(fifthbox) #수평정렬 self.setLayout(vbox) #각 버튼이벤트 연결 addButton.clicked.connect(self.addButtonClicked) delButton.clicked.connect(self.delButtonClicked) findButton.clicked.connect(self.findButtonClicked) incButton.clicked.connect(self.incButtonClicked) showButton.clicked.connect(self.showButtonClicked) self.show()
def __init__(self, parent=None): super(WidgetGallery, self).__init__(parent) self.originalPalette = QApplication.palette() styleComboBox = QComboBox() styleComboBox.addItems(QStyleFactory.keys()) styleLabel = QLabel("&Style:") styleLabel.setBuddy(styleComboBox) self.useStylePaletteCheckBox = QCheckBox( "&Use style's standard palette") self.useStylePaletteCheckBox.setChecked(True) disableWidgetsCheckBox = QCheckBox("&Disable widgets") self.createTopLeftGroupBox() self.createTopRightGroupBox() self.createBottomLeftTabWidget() self.createBottomRightGroupBox() self.createProgressBar() styleComboBox.activated[str].connect(self.changeStyle) self.useStylePaletteCheckBox.toggled.connect(self.changePalette) disableWidgetsCheckBox.toggled.connect( self.topLeftGroupBox.setDisabled) disableWidgetsCheckBox.toggled.connect( self.topRightGroupBox.setDisabled) disableWidgetsCheckBox.toggled.connect( self.bottomLeftTabWidget.setDisabled) disableWidgetsCheckBox.toggled.connect( self.bottomRightGroupBox.setDisabled) topLayout = QHBoxLayout() topLayout.addWidget(styleLabel) topLayout.addWidget(styleComboBox) topLayout.addStretch(1) topLayout.addWidget(self.useStylePaletteCheckBox) topLayout.addWidget(disableWidgetsCheckBox) mainLayout = QGridLayout() mainLayout.addLayout(topLayout, 0, 0, 1, 2) mainLayout.addWidget(self.topLeftGroupBox, 1, 0) mainLayout.addWidget(self.topRightGroupBox, 1, 1) mainLayout.addWidget(self.bottomLeftTabWidget, 2, 0) mainLayout.addWidget(self.bottomRightGroupBox, 2, 1) mainLayout.addWidget(self.progressBar, 3, 0, 1, 2) mainLayout.setRowStretch(1, 1) mainLayout.setRowStretch(2, 1) mainLayout.setColumnStretch(0, 1) mainLayout.setColumnStretch(1, 1) self.setLayout(mainLayout) self.setWindowTitle("Styles") self.changeStyle('Windows')
def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.setObjectName("lastmonthwidget") # Background image self.setStyleSheet(LinearStyle.get(self.objectName(), '#273B4F')) # Size self.setMaximumSize(240, 235) # ---- Content ---- self.layout = QVBoxLayout() # -- Header -- self.header = QLabel(self.tr("Last Month")) self.header.setStyleSheet( "background-color: rgba(0,0,0,0); margin-top: 15; margin-left: 8 ") font = QFont('Roboto', pointSize=20, weight=QFont.Bold) self.header.setFont(font) self.header.setAlignment(Qt.AlignTop | Qt.AlignLeft) # -- Second Row : Changes -- self.second_row = QHBoxLayout() self.second_row.setSpacing(0) self.second_row.setContentsMargins(0, 0, 0, 0) # Change (Fiat) change_fiat_value = dbhandler.get_change_last_month() change_fiat_value_str = "+" + \ str(change_fiat_value) if change_fiat_value >= 0 else str( change_fiat_value) self.change_fiat = QLabel(change_fiat_value_str) self.change_fiat.setStyleSheet( "background-color: rgba(0,0,0,0); color:#D3EABD; margin-left: 8") font = QFont('Roboto', pointSize=15) self.change_fiat.setFont(font) self.change_fiat.setAlignment(Qt.AlignTop | Qt.AlignLeft) self.second_row.addWidget(self.change_fiat) # Fiat label self.fiat_label = QLabel(confighandler.get_fiat_currency().upper()) self.fiat_label.setStyleSheet( "background-color: rgba(0,0,0,0);color:#D3EABD; margin-top:10px") self.fiat_label.setFont(QFont('Roboto', pointSize=7)) self.fiat_label.setAlignment(Qt.AlignTop | Qt.AlignLeft) self.second_row.addWidget(self.fiat_label) # Change (%) first_total_wealth_current_month = dbhandler.get_first_total_wealth_current_month( ) change_last_month = dbhandler.get_change_last_month() if first_total_wealth_current_month > 0: change_percentage = 100 * \ (change_last_month / first_total_wealth_current_month) change_percentage = round(change_percentage, 1) change_percentage_str = "+{}%".format( str(change_percentage )) if change_percentage >= 0 else "{}%".format( str(change_percentage)) else: # No change this month change_percentage_str = "0%" self.change_percentage = QLabel(change_percentage_str) self.change_percentage.setStyleSheet( "background-color: rgba(0,0,0,0);color:#D3EABD; margin-right: 8") font = QFont() font.setFamily("Roboto") font.setPointSize(15) self.change_percentage.setFont(font) self.change_percentage.setAlignment(Qt.AlignTop | Qt.AlignLeft) self.second_row.addWidget(self.change_percentage) # -- Chart -- self.lastmonthchart = TotalWealthHistoryChartView(self) data = dbhandler.get_total_wealth_by_day_current_month() self.lastmonthchart.setupChartWithData(data) self.layout.addWidget(self.header) self.layout.addLayout(self.second_row) self.layout.addWidget(self.lastmonthchart) self.setLayout(self.layout)
def __init__(self): super(QWidget, self).__init__() layout = QVBoxLayout(self) types = QGroupBox('TYPES') testGroup = QHBoxLayout(types) ''' testGroup.addRow(QLabel("Base"), QCheckBox()) testGroup.addRow(QLabel("DLC"), QCheckBox()) testGroup.addRow(QLabel("Update"), QCheckBox()) testGroup.addRow(QLabel("Demo"), QCheckBox()) ''' testGroup.addWidget(QLabel("Base")) testGroup.addWidget(ConfCheckbox('download.base')) testGroup.addStretch() testGroup.addWidget(QLabel("DLC")) testGroup.addWidget(ConfCheckbox('download.DLC')) testGroup.addStretch() testGroup.addWidget(QLabel("Update")) testGroup.addWidget(ConfCheckbox('download.update')) testGroup.addStretch() testGroup.addWidget(QLabel("Demo")) testGroup.addWidget(ConfCheckbox('download.demo')) layout.addWidget(types) region = QGroupBox('REGION') regionLayout = QHBoxLayout(region) regionLayout.addWidget(Region()) layout.addWidget(region) layout.addStretch()