def data(self, index, role): row = index.row() column = index.column() if role == Qt.DisplayRole: text = "({},{})".format(row, column) return text elif role == Qt.FontRole: if row == 0 and column == 0: # change font only for cell(0,0) my_font = QFont() my_font.setBold(True) my_font.setItalic(True) my_font.setUnderline(True) return my_font elif role == Qt.BackgroundRole: if row == 1 and column == 2: # change background only for cell(1,2) my_background = QBrush(Qt.red) return my_background elif role == Qt.TextAlignmentRole: if row == 1 and column == 1: # change text alignment only for cell(1,1) return Qt.AlignRight + Qt.AlignVCenter elif role == Qt.CheckStateRole: if row == 0 and column == 1: # add checkbox only for cell(0,1) return Qt.Checked elif row == 0 and column == 2: # add checkbox only for cell(0,2) return Qt.Unchecked return QVariant() # see http://doc.qt.io/qt-5/qvariant.html#details
def init_ui(self): font = QFont() font.setPointSize(14) font.setUnderline(True) self.scan_type_label.setFont(font) for scan in ScanTypes: self.scan_type_input.addItem(scan.value) #self.save_unfoldded_data_check.setChecked(True) self.scan_title.setFont(font) self.scan_button.clicked.connect(self._parent.browse_file) self.grid_layout.addWidget(self.scan_type_label, 0, 0, 1, 2) self.grid_layout.addWidget(self.scan_type_input, 1, 0, 1, 2) self.grid_layout.addWidget(self.direct_beam_widget, 2, 0, 5, 2) #self.grid_layout.addWidget(self.median_filter_check, 7, 0, 1, 1) #self.grid_layout.addWidget(self.save_unfoldded_data_check, 7, 1, 1, 1) self.grid_layout.addWidget(self.scan_title, 8, 0, 1, 2) self.grid_layout.addWidget(self.scan_label, 9, 0, 2, 1) self.grid_layout.addWidget(self.scan_button, 9, 1, 2, 1)
def init_editor(self): """"Initializes the editor widget.""" font = QFont() self.tool_bar = QToolBar("Format Actions", self) self.cursor_position_changed.connect(self.reload_status) self.bold_btn = QToolButton(self) self.bold_btn.setText("B") font.setBold(True) self.bold_btn.setFont(font) font.setBold(False) self.bold_btn.setCheckable(True) self.bold_btn.clicked.connect(self.toggle_bold) self.tool_bar.addWidget(self.bold_btn) self.italic_btn = QToolButton(self) self.italic_btn.setText("I") font.setItalic(True) self.italic_btn.setFont(font) font.setItalic(False) self.italic_btn.setCheckable(True) self.italic_btn.clicked.connect(self.toggle_italic) self.tool_bar.addWidget(self.italic_btn) self.underline_btn = QToolButton(self) self.underline_btn.setText("U") font.setUnderline(True) self.underline_btn.setFont(font) font.setUnderline(False) self.underline_btn.setCheckable(True) self.underline_btn.clicked.connect(self.toggle_underline) self.tool_bar.addWidget(self.underline_btn) self.reload_status()
class HelpLabel(QLabel): def __init__(self, text, help_text): QLabel.__init__(self, text) self.help_text = help_text self.app = QCoreApplication.instance() self.font = QFont() def mouseReleaseEvent(self, x): custom_message_box(icon=QMessageBox.Information, parent=self, title=_('Help'), text=self.help_text) def enterEvent(self, event): self.font.setUnderline(True) self.setFont(self.font) self.app.setOverrideCursor(QCursor(Qt.PointingHandCursor)) return QLabel.enterEvent(self, event) def leaveEvent(self, event): self.font.setUnderline(False) self.setFont(self.font) self.app.setOverrideCursor(QCursor(Qt.ArrowCursor)) return QLabel.leaveEvent(self, event)
def handlePaintRequest(self,printer): """ This is the backbone main function that handles all the print functions PrintPreview and PrintCsv . This handles all the required operations like bolding the header labels and all the other things like moving the cursor for each cell row and column wise and finally printing to document. :param printer: :return: """ document = QTextDocument() cursor = QTextCursor(document) table = cursor.insertTable(self.tableWidget.rowCount(), self.tableWidget.columnCount()) fm = QTextCharFormat() font = QFont() font.setBold(True) font.setUnderline(True) fm.setFont(font) for i in range(self.tableWidget.columnCount()): col = self.tableWidget.horizontalHeaderItem(i).text() if col is not None: cursor.insertText(col,fm) cursor.movePosition(QTextCursor.NextCell) for row in range(self.tableWidget.rowCount()): for col in range(self.tableWidget.columnCount()): w = self.tableWidget.cellWidget(row, col) it = self.tableWidget.item(row, col) if w is not None: cursor.insertText(self.get_text_from_widget(w)) elif it is not None: cursor.insertText(it.text()) cursor.movePosition(QTextCursor.NextCell) document.print_(printer)
def __init__(self): QMainWindow.__init__(self) # self refers to QMainWindow self.settings = QSettings('Peppercorn', 'Peppercorn_Note_Pad') self.filename = None self.file_open = False self.te_main = QTextEdit(self) self.setWindowTitle("Peppercorn Notepad") self.setGeometry(100, 100, 800, 500) self.setMinimumSize(200, 200) try: self.resize(self.settings.value('window size')) # print('sized') self.move(self.settings.value('window location')) # print('moved') font = QFont() # print('font') font.setFamily(self.settings.value('font family')) # print(str(self.settings.value('font family'))) font.setPointSize(int(self.settings.value('font size'))) # print(self.settings.value('font size')) font.setBold(eval(self.settings.value('bold'))) # print(self.settings.value('bold')) font.setItalic(eval(self.settings.value('italics'))) # print(self.settings.value('italics')) font.setUnderline(eval(self.settings.value('underline'))) # print(self.settings.value('underline')) self.te_main.setFont(font) except: pass self.build_ui()
def update_font_slot(self): font = QFont() is_bold = self.ui.boldCheckBox.isChecked() font.setBold(is_bold) self.current_el.is_bold = is_bold is_italic = self.ui.italicCheckBox.isChecked() font.setItalic(is_italic) self.current_el.is_italic = is_italic is_underline = self.ui.underlineCheckBox.isChecked() font.setUnderline(is_underline) self.current_el.is_underline = is_underline font_name = self.ui.fontComboBox.currentText() self.current_el.font = font_name font.setFamily(font_name) size = self.ui.sizeSpinBox.value() font.setPointSize(size) self.current_el.size = size self.current_w.setFont(font) self.current_w.adjustSize()
class HelpLabel(QLabel): def __init__(self, text, help_text): QLabel.__init__(self, text) self.app = QCoreApplication.instance() self.font = QFont() self.set_help_text(help_text) def set_help_text(self, help_text): self.help_text = help_text def mouseReleaseEvent(self, x): QMessageBox.information(self, 'Help', self.help_text) def enterEvent(self, event): self.font.setUnderline(True) self.setFont(self.font) self.app.setOverrideCursor(QCursor(Qt.PointingHandCursor)) return QLabel.enterEvent(self, event) def leaveEvent(self, event): self.font.setUnderline(False) self.setFont(self.font) self.app.setOverrideCursor(QCursor(Qt.ArrowCursor)) return QLabel.leaveEvent(self, event)
def selectSlice(self, account): """ Explodes a certaing slice that corresponds to an account """ for slce in self.series.slices(): if slce.label().split(' ')[0] == account: # Explode slice slce.setExploded(True) font = QFont() font.setBold(True) font.setWeight(QFont.ExtraBold) font.setUnderline(True) slce.setLabelFont(font) slce.setLabelColor(QColor("white")) slce.setLabelPosition(QPieSlice.LabelOutside) else: slce.setExploded(False) slce.setLabelFont(QFont()) # # slce.setLabelPosition(QPieSlice.LabelInsideTangential) font = QFont() slce.setLabelColor(QColor("#3f3f39")) slce.setLabelFont(font) slce.setLabelPosition(QPieSlice.LabelInsideNormal) self.hideLittleSlices(selected=account)
def initui(self): self.setWindowTitle(self.title) self.setGeometry(self.left, self.top, self.width, self.height) # make a background picture label = QLabel(self) iurl = "https://i.imgur.com/BUimYNu.jpg" iurl = urlopen(iurl).read() image = QImage() image.loadFromData(iurl) pixmap = QPixmap(image) label.setPixmap(pixmap) # make the label label2 = QLabel("Click to install the required plugin:", self) label2.move(67, 120) font = QFont() font.setBold(1) font.setUnderline(1) font.setPointSize(23) label2.setFont(font) # make the install button button = QPushButton('Install', self) button.move(245, 240) button.resize(150, 80) font2 = QFont() font2.setPointSize(15) button.setFont(font2) button.clicked.connect(self.on_click1) self.show()
def __applyMonokaiPython(self, lexerName): defaultFont = QFont("Roboto Mono", self.__defaultFontSize, -1, False) colors = [ "#ffffff", "#888877", "#ae81ff", "#ffff88", "#ffff88", "#ff3377", "#ffff88", "#ffff88", "#aaff33", "#aaff47", "#ff3377", "#ffffff", "#888877", "#f8f8f0", "#ffe892", "#aa88ff" ] lexer = PreferencesLexer(lexerName) for i in range(0, 15): lexer.setPaper(QColor(Qt.black), i) lexer.setFont(defaultFont, i) lexer.setColor(QColor(colors[i]), i) # specific values now # comment defaultFont.setItalic(True) lexer.setFont(defaultFont, 1) defaultFont.setItalic(False) # class name defaultFont.setUnderline(True) lexer.setFont(defaultFont, 8) # Unclosed string lexer.setPaper(QColor("#f92672"), 13) lexer.setEolFill(True, 13) lexer.writeSettings(Preferences.Prefs.settings, "Scintilla")
def data(self, index, role=Qt.DisplayRole): row, col = index.row(), index.column() token = self.tokens[row] if role == Qt.DisplayRole: if col == self.NAME: return token[col][:16] + '...' return token[col] if role == Qt.ToolTipRole: if col in [self.NAME, self.DETAILS]: return token[col] else: return None elif role == Qt.TextAlignmentRole and col in (self.AMOUNT, self.SUPPLY): return QVariant(Qt.AlignRight | Qt.AlignVCenter) elif role == Qt.TextAlignmentRole and col == self.LIMITED: return QVariant(Qt.AlignCenter | Qt.AlignVCenter) elif role == Qt.ForegroundRole: if col == self.NAME: return QVariant(QColor(Qt.blue)) elif role == Qt.FontRole and col in [self.AMOUNT, self.SUPPLY]: font = QFont("RobotoCondensed-Light", 9) return QVariant(font) elif role == Qt.FontRole and col == self.NAME: font = QFont("Roboto Light", 10) font.setUnderline(True) return QVariant(font) return None
def __init__(self, parent=None, xmlelement='QDomElement:None', index=0, edit=False): super().__init__(parent) self.element = xmlelement self.index = index self.edit = edit self.var_dict = dict() self.widget_dict = dict() # self.setStyleSheet("margin:2 2;") width = int(self.element.attribute( "width")) * 7 if self.element.attribute("width") else 130 height = int(self.element.attribute( "height")) * 24 if self.element.attribute("height") else 24 self.resize(width, height) font = QFont() if self.element.hasAttribute("size"): try: font.setPointSize(float(self.element.attribute("size"))) except: pass if self.element.hasAttribute("style"): format = '{:03b}'.format(int(self.element.attribute("style"))) font.setBold(True if format[0] != '0' else False) font.setItalic(True if format[1] != '0' else False) font.setUnderline(True if format[2] != '0' else False) self.setFont(font) if not edit: self.setEditable(False if self.element.attribute("edit", "0") == "0" else True) self.currentTextChanged.connect(self.on_currentTextChanged) self.currentIndexChanged.connect(self.on_currentIndexChanged)
class MonoFont: def __init__(self, name, size): self.font = QFont(name, size) self.font.setKerning(False) self.ascent = int(QFontMetricsF(self.font).ascent()) self.charWidth = QFontMetricsF(self.font).width("X") self.charHeight = int(QFontMetricsF(self.font).height()) self.charOffset = 0 # can introduce extra linespacing here self.bold = QFont(self.font) self.bold.setBold(True) self.under = QFont(self.font) self.under.setUnderline(True) # align character width properly if self.charWidth % 1.0 < 0.5: adjust = -(self.charWidth % 1.0) else: adjust = 1.0 - (self.charWidth % 1.0) self.charWidth += adjust self.font.setLetterSpacing(QFont.AbsoluteSpacing, adjust) self.bold.setLetterSpacing(QFont.AbsoluteSpacing, adjust) self.under.setLetterSpacing(QFont.AbsoluteSpacing, adjust)
def __init__(self) -> None: super().__init__() self.table_widget = QTableWidget(self) self.table_widget.setEditTriggers(QAbstractItemView.NoEditTriggers) self.table_widget.setColumnCount(3) self.table_widget.setHorizontalHeaderLabels(["VID", "Author", "Title"]) self.update_video_list() self.upload_button = QPushButton("upload") self.name_label = ClickLabel("1") font = QFont() font.setUnderline(True) self.name_label.setFont(font) self.hbox_layout = QHBoxLayout() self.hbox_layout.addWidget(self.upload_button) self.hbox_layout.addStretch(2) self.hbox_layout.addWidget(self.name_label) self.vbox_layout = QVBoxLayout() self.vbox_layout.addLayout(self.hbox_layout) self.vbox_layout.addWidget(self.table_widget) self.central_widget = QWidget() self.central_widget.setLayout(self.vbox_layout) self.setCentralWidget(self.central_widget) self.upload_button.pressed.connect(self.upload_video) self.name_label.clicked.connect(self.set_uid)
def _configure_widget(self, el, widget): w, h = widget.geometry().width(), widget.geometry().height() widget.setGeometry( QRect(round(el.ratio_x * self.screen_w), round(el.ratio_y * self.screen_h), w, h)) font = QFont() font.setFamily(el.font) if el.color: utils.set_widget_stylesheet(widget, f'color: {el.color}') if el.size: font.setPointSize(el.size) if el.is_bold: font.setBold(True) if el.is_italic: font.setItalic(True) if el.is_underline: font.setUnderline(True) if el.shadow_blur or el.shadow_offset: eff = QGraphicsDropShadowEffect() eff.setBlurRadius(el.shadow_blur) eff.setOffset(el.shadow_offset) widget.setGraphicsEffect(eff) if el.shadow_offset or el.shadow_blur: eff = QGraphicsDropShadowEffect() eff.setBlurRadius(el.shadow_blur) eff.setOffset(el.shadow_offset) widget.setGraphicsEffect(eff) widget.setFont(font) widget.adjustSize()
def __init__(self, parent=None, xmlelement='QDomElement:None', index=0, edit=False): super().__init__(parent) self.element = xmlelement self.edit = edit self.index = index self.viewport().index = index self.var_dict = dict() self.widget_dict = dict() self.expr_value = self.element.text() if edit: self.setReadOnly(True) self.viewport().setEnabled(False) width = float( self.element.attribute("width")) * 7 if self.element.attribute( "width") else 0 height = float( self.element.attribute("height")) * 24 if self.element.attribute( "height") else 24 self.resize(width, height) font = QFont() if self.element.hasAttribute("size"): try: font.setPointSize(float(self.element.attribute("size"))) except: pass if self.element.hasAttribute("style"): format = '{:03b}'.format(int(self.element.attribute("style"))) font.setBold(True if format[0] != '0' else False) font.setItalic(True if format[1] != '0' else False) font.setUnderline(True if format[2] != '0' else False) self.setFont(font)
def __init__(self, document, parent=None): """Create subwidgets and layout.""" super(SingleLayerInfoPane, self).__init__(parent) self.document = document # FUTURE: make this a weakref? min_width = 3 * 100 # build our layer detail info display controls self.name_text = QLabel("") self.name_text.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) self.time_text = QLabel("") self.time_text.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) self.instrument_text = QLabel("") self.instrument_text.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) self.wavelength_text = QLabel("") self.wavelength_text.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) self.colormap_text = QLabel("") self.colormap_text.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) self.clims_text = QLabel("") self.clims_text.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) self.cmap_vis = QNoScrollWebView() self.cmap_vis.setFixedSize(min_width, 30) self.cmap_vis.page().runJavaScript( 'document.body.style.overflow = "hidden";') self.composite_details = QLabel("Composite Details") self.composite_details.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) f = QFont() f.setUnderline(True) self.composite_details.setFont(f) self.composite_codeblock = QTextEdit() self.composite_codeblock.setReadOnly(True) self.composite_codeblock.setMinimumSize(min_width, 100) self.composite_codeblock.setDisabled(True) self.composite_codeblock.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum) # set the layout for this widget # Note: add in a grid is (widget, row#, col#) or (widget, row#, col#, row_span, col_span) layout = QGridLayout() layout.setAlignment(Qt.AlignLeft) layout.addWidget(self.name_text, 0, 0) layout.addWidget(self.time_text, 1, 0) layout.addWidget(self.instrument_text, 2, 0) layout.addWidget(self.wavelength_text, 3, 0) layout.addWidget(self.colormap_text, 4, 0) layout.addWidget(self.clims_text, 5, 0) layout.addWidget(self.cmap_vis, 6, 0) layout.addWidget(self.composite_details, 7, 0) layout.addWidget(self.composite_codeblock, 8, 0) self.setLayout(layout) # add this widget to the scrollable parent widget layout = QVBoxLayout() layout.addWidget(self) self.parent().setLayout(layout) # clear out the display self.update_display()
def getFontFromCmnd(self, fontinfo): ''' Returns a QFont based on the information in the dictionary fontinfo. Recognized keys in the font dictionary are: "family": font family name (string) "size": text size in points (1/72 inches) "italic": italicize? (False/True) "bold": make bold? (False/True) "underline": underline? (False/True) ''' try: myfont = QFont(fontinfo["family"]) except KeyError: myfont = self.__viewer.font() try: myfont.setPointSizeF(fontinfo["size"]) except KeyError: pass try: myfont.setItalic(fontinfo["italic"]) except KeyError: pass try: myfont.setBold(fontinfo["bold"]) except KeyError: pass try: myfont.setUnderline(fontinfo["underline"]) except KeyError: pass return myfont
def actionUnderlined(self): myFont = QFont() myFont.setUnderline(True) self.textEdit.setFont(myFont)
def update_font(basefont, weight=None, italic=None, underline=None, pixelSize=None, pointSize=None): """ Return a copy of `basefont` :class:`QFont` with updated properties. """ font = QFont(basefont) if weight is not None: font.setWeight(weight) if italic is not None: font.setItalic(italic) if underline is not None: font.setUnderline(underline) if pixelSize is not None: font.setPixelSize(pixelSize) if pointSize is not None: font.setPointSize(pointSize) return font
def action_underlined(self): myFont = QFont() if self.underlined.isChecked(): myFont.setUnderline(True) self.ui.textEdit_message.setFont(myFont) else: myFont.setUnderline(False) self.ui.textEdit_message.setFont(myFont)
def initUI(self, LoginUI): LoginUI.setObjectName("LoginUI") LoginUI.resize(480, 260) icon = QIcon() icon.addPixmap(QPixmap(":/images/icon.jpeg"), QIcon.Normal, QIcon.Off) LoginUI.setWindowIcon(icon) self.gridLayout_2 = QGridLayout(LoginUI) self.gridLayout_2.setContentsMargins(10, 10, 10, 10) self.gridLayout_2.setSpacing(5) self.gridLayout_2.setObjectName("gridLayout_2") self.scrollArea = QScrollArea(LoginUI) self.scrollArea.setWidgetResizable(True) self.scrollArea.setObjectName("scrollArea") self.scrollAreaWidgetContents = QWidget() self.scrollAreaWidgetContents.setGeometry(QRect(0, 0, 458, 238)) self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents") self.verticalLayout = QVBoxLayout(self.scrollAreaWidgetContents) self.verticalLayout.setObjectName("verticalLayout") self.Title = QLabel(self.scrollAreaWidgetContents) font = QFont() font.setPointSize(20) font.setUnderline(True) self.Title.setFont(font) self.Title.setAlignment(Qt.AlignCenter) self.Title.setObjectName("Title") self.verticalLayout.addWidget(self.Title) self.Subtitle = QLabel(self.scrollAreaWidgetContents) self.Subtitle.setAlignment(Qt.AlignCenter) self.Subtitle.setObjectName("Subtitle") self.verticalLayout.addWidget(self.Subtitle) self.usernameBox = QLineEdit(self.scrollAreaWidgetContents) self.usernameBox.setText("") self.usernameBox.setAlignment(Qt.AlignCenter) self.usernameBox.setObjectName("usernameBox") self.verticalLayout.addWidget(self.usernameBox) self.loginButton = QPushButton(self.scrollAreaWidgetContents) self.loginButton.setObjectName("loginButton") self.verticalLayout.addWidget(self.loginButton) self.infoLabel = QLabel(self.scrollAreaWidgetContents) self.infoLabel.setAlignment(Qt.AlignCenter) self.infoLabel.setStyleSheet("color: red") self.infoLabel.setObjectName("infoLabel") self.verticalLayout.addWidget(self.infoLabel) self.scrollArea.setWidget(self.scrollAreaWidgetContents) self.gridLayout_2.addWidget(self.scrollArea, 0, 0, 1, 1) self.retranslateUi(LoginUI) QMetaObject.connectSlotsByName(LoginUI)
def createWidgets(self): font = QFont() font.setItalic(True) #font.setBold(True) font.setUnderline(True) loginfont = QFont() loginfont.setPointSize(13) self.lb1 = QLabel('账号:',self) self.lb1.setFixedSize(70,30) self.lb1.setObjectName('lb') self.lb2 = QLabel("密码:", self) self.lb2.setFixedSize(70, 30) self.edit1 = QLineEdit(self) self.edit1.setPlaceholderText("请输入账号") self.edit2 = QLineEdit(self) self.edit2.installEventFilter(self) self.edit2.setContextMenuPolicy(Qt.NoContextMenu) self.edit2.setPlaceholderText("请输入密码") self.edit2.setEchoMode(QLineEdit.Password) self.cb1 = QCheckBox('显示密码', self) self.cb1.stateChanged.connect(self.check) self.cb2 = QCheckBox('自动登录', self) self.login_button = QPushButton("登 录", self) self.login_button.setFixedSize(300,30) self.login_button.setFont(loginfont) self.login_button.clicked.connect(self.Ok) self.login_button.setStyleSheet('''QPushButton{ height:30px; border-style: outset; border-width: 2px; border-radius: 10px; border-color: beige; background-color: #0078d7} QPushButton:hover { background-color: #0078d7; color:white; border-style: inset;} QPushButton:pressed { background: transparent; border-style: inset;}''') self.bt1 = QPushButton('注册账号', self) self.bt1.setFixedSize(80,30) self.bt1.setFont(font) self.bt1.setStyleSheet('''QPushButton{color:black;background:transparent} QPushButton:hover {color: #0078d7} QPushButton:pressed {color: #0078d7}''') self.bt1.clicked.connect(self.register) self.bt2 = QPushButton('找回密码', self) self.bt2.setFixedSize(80, 30) self.bt2.setFont(font) self.bt2.setStyleSheet('''QPushButton{color:black;background:transparent} QPushButton:hover {color: #0078d7} QPushButton:pressed {color: #0078d7}''')
def __refresh_example_font(self): qfont = QFont(self.__font.family) qfont.setPixelSize(self.__font.size) qfont.setBold(FontStyle.bold in self.__font.style) qfont.setItalic(FontStyle.italic in self.__font.style) qfont.setStrikeOut(FontStyle.strike in self.__font.style) qfont.setUnderline(FontStyle.underline in self.__font.style) self.__example.setFont(qfont)
def preview_item(self): item = QTableWidgetItem('Preview') item.setText('Preview') item.setForeground(QBrush(QColor(0, 0, 255))) link_font = QFont(item.font()) link_font.setUnderline(True) item.setFont(link_font) item.setTextAlignment(Qt.AlignHCenter) return item
def data(self, index, role=Qt.DisplayRole): if not index.isValid(): return None result = None record = self.records[index.row()] if getattr(record, '_cutelog', False): return self.data_internal(index, record, role) level = self.levels[record.levelno] if role == Qt.DisplayRole: column = self.table_header[index.column()] result = getattr(record, column.name) elif role == Qt.DecorationRole: if self.headerData(index.column()) == 'Message': if record.exc_text: mode = CONFIG['exception_indication'] should = mode in (Exc_Indication.MSG_ICON, Exc_Indication.ICON_AND_RED_BG) if should: result = self.parent_widget.style().standardIcon(QStyle.SP_BrowserStop) elif role == Qt.FontRole: result = None styles = level.styles if not self.dark_theme else level.stylesDark # although there is a more efficient way of doing this, # this is as fast as QFont(self.font) result = QFont(CONFIG.logger_table_font, CONFIG.logger_table_font_size) if styles: # result = QFont(self.font) if 'bold' in styles: result.setBold(True) if 'italic' in styles: result.setItalic(True) if 'underline' in styles: result.setUnderline(True) elif role == Qt.ForegroundRole: if not self.dark_theme: result = level.fg else: result = level.fgDark elif role == Qt.BackgroundRole: if record.exc_text: mode = CONFIG['exception_indication'] should = mode in (Exc_Indication.RED_BG, Exc_Indication.ICON_AND_RED_BG) if should: if not self.dark_theme: color = QColor(255, 180, 180) else: color = Qt.darkRed result = QBrush(color, Qt.DiagCrossPattern) return result if not self.dark_theme: result = level.bg else: result = level.bgDark elif role == SearchRole: result = record.message return result
def count(self): """ 获取查询信息,排布在表格控件中 增加:统计完成后在目录生成报表 fanch 2019-04-15 16:21:04 :return: """ if not (path.exists('issues.json') and path.exists('projects.json') and path.exists('users.json')): self.updatedata() else: # 打开可排序性会导致重新排列后显示数据丢失,故先关闭。重新设置数据后再打开 self.tableWidget_taskList.setSortingEnabled(False) tasks = self.tasks statuses = self.statuses assignedto = self.assignedTo if tasks == [] or statuses == [] or assignedto == []: self.messagebox.information(self, '提示', '任务类型或者任务状态或者被指派人不能为空,请确认无误后再查询', QMessageBox.Ok) else: task_ids = [TRACKER_ID[i] for i in tasks] status_ids = [STATUS_ID[i] for i in statuses] log.info( '要查询的条件是taskes={}, statuses={}, assigned to={}'.format( tasks, statuses, assignedto)) issues = get_some_issues(status_ids, task_ids, assignedto, field_list) horiheaderitems = issues[0].split('|||') # 获取表头字段 tasklist = [i.split('|||') for i in issues[1:-1]] # 获取任务列表,并将每个任务分离成列表 x = len(horiheaderitems) y = len(tasklist) file = xlwt.Workbook() sheet = file.add_sheet('tasks') for i in range(len(horiheaderitems)): sheet.write(0, i, horiheaderitems[i]) self.tableWidget_taskList.setColumnCount(x) self.tableWidget_taskList.setRowCount(y) # 设置表宽度和长度 self.tableWidget_taskList.setHorizontalHeaderLabels( horiheaderitems) # 设置表头 # 必须保证所有项跟字段具有相同的宽度 font = QFont() font.setUnderline(True) for i in range(y): for j in range(x): # 按照表格坐标设置每个任务的每个元素 sheet.write(i + 1, j, tasklist[i][j]) # 将数据保存到对应表格中 item = QtWidgets.QTableWidgetItem(tasklist[i][j]) if j == 0: item.setFont(font) self.tableWidget_taskList.setItem(i, j, item) file.save('tasks.xls') self.tableWidget_taskList.setSortingEnabled(True) # 重新打开可排序性
def MainSearch(self): VMainSearch = QVBoxLayout() VSearch = QVBoxLayout() HSearch = QHBoxLayout() self.labilSearch= QLabel() self.EntrySearch = QLineEdit() self.ButtonSearsh = QPushButton() font = QFont() font.setFamily("Segoe UI") font.setPointSize(18) self.labilSearch.setFont(font) self.labilSearch.setStyleSheet("color: #FFFFFF; background-color: none;") self.labilSearch.setAlignment(Qt.AlignCenter) self.labilSearch.setText(self._translate("MainWindow", "<html><head/><body><p><span style=\" font-weight:600;\">Search</span> Anime</p></body></html>")) font = QFont() font.setFamily("Segoe UI") font.setPointSize(13) font.setBold(True) font.setItalic(True) font.setUnderline(False) font.setWeight(75) font.setStrikeOut(False) font.setStyleStrategy(QFont.PreferDefault) self.ButtonSearsh.setFont(font) self.ButtonSearsh.setStyleSheet(" \n" "background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 0, 255), stop:1 rgba(255, 255, 255, 255));\n" "color:rgb(77, 77, 127);\n" "") self.ButtonSearsh.setText(self._translate("MainWindow", "Search")) self.EntrySearch.setFont(font) self.EntrySearch.setStyleSheet("background-color: rgb(45, 45, 74);") VSearch.addWidget(self.EntrySearch) VSearch.addWidget(self.ButtonSearsh) VSearch.setContentsMargins(0, 20, 0, 20) HSearch.addStretch() HSearch.addLayout(VSearch) HSearch.addStretch() VMainSearch.addWidget(self.labilSearch) VMainSearch.addLayout(HSearch) #VMainSearch.addStretch() VMainSearch.setContentsMargins(0, 20, 0, 0) self.VMain.addLayout(VMainSearch) self.VMain.addStretch()
def set_fontact(self, font, sxt): set_font = QFont() set_font.setFamily(font[0]) set_font.setPointSize(font[1]) set_font.setBold(font[2]) set_font.setItalic(font[3]) set_font.setUnderline(font[4]) if sxt == 1: self.con_in.setFont(set_font) else: self.con_out.setFont(set_font)
def setItemTextFormat(item, f): font = QFont(data.font) if f.hasProperty(QTextFormat.ForegroundBrush): item.setForeground(0, f.foreground().color()) else: item.setForeground(0, data.baseColors['text']) if f.hasProperty(QTextFormat.BackgroundBrush): item.setBackground(0, f.background().color()) else: item.setBackground(0, QBrush()) font.setWeight(f.fontWeight()) font.setItalic(f.fontItalic()) font.setUnderline(f.fontUnderline()) item.setFont(0, font)
def drawText(self, event, qp): text = """ 一二三一二三一二三一二三一二三一二三一二三一二三一二三一二三一二三一二三 112233112233112233112233112233112233112233112233112233112233112233112233 aabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbccaabbcc 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 a b c a b c a b c a b c a b c a b c a b c a b c a b c a b c a b c a b c """ qp.setPen(QColor(168, 34, 3)) family = "WenQuanYi Micro Hei Mono" family = "monospace" family = "monaco,WenQuanYi Micro Hei Mono" f = QFont(family, 20) f.setUnderline(True) qp.setFont(f) qp.drawText(event.rect(), Qt.AlignCenter, text)
def __init__(self, *args): super(MyDragDropBox, self).__init__(*args) Lumberjack.info('spawning a << MyDragDropBox >>') print(Fore.GREEN + '--=== DRAGDROPBOX ===--') print(Fore.GREEN + 'Here come the inits!') print(Fore.GREEN + 'args: ', args) print(Fore.GREEN + '==--- DRAGDROPBOX ---==') self.verticalLayout = QVBoxLayout(self) self.verticalLayout.setObjectName("verticalLayout") self.DropLabel = QLabel(self) font = QFont() font.setPointSize(12) font.setBold(False) font.setUnderline(False) font.setWeight(50) self.DropLabel.setFont(font) self.DropLabel.setAlignment(Qt.AlignCenter) self.DropLabel.setObjectName("DropLabel") self.verticalLayout.addWidget(self.DropLabel) self.edit = False
def data(self, index: QModelIndex, role=Qt.DisplayRole): i, j = index.row(), index.column() lbl = self.message_type[i] # type: SimulatorProtocolLabel if role == Qt.DisplayRole: if j == 0: return lbl.name elif j == 1: return ProtocolLabel.DISPLAY_FORMATS[lbl.display_format_index] elif j == 2: if lbl.is_checksum_label: return "Checksum" else: return lbl.VALUE_TYPES[lbl.value_type_index] elif j == 3: if lbl.value_type_index == 0: message = lbl.parent() try: data = message.plain_bits[lbl.start:lbl.end] except IndexError: return None return util.convert_bits_to_string(data, lbl.display_format_index, pad_zeros=True) elif lbl.value_type_index == 1: return "-" elif lbl.value_type_index == 2: return lbl.formula elif lbl.value_type_index == 3: return lbl.external_program elif lbl.value_type_index == 4: return "Range (Decimal): " + str(lbl.random_min) + " - " + str(lbl.random_max) elif role == Qt.EditRole: if j == 0: return lbl.name elif j == 1: return lbl.display_format_index elif j == 2: return lbl.value_type_index elif j == 3: if lbl.value_type_index == 2: return lbl.formula elif lbl.value_type_index == 3: return lbl.external_program elif lbl.value_type_index == 4: return [lbl.random_min, lbl.random_max] elif role == Qt.FontRole: if j == 0: font = QFont() font.setItalic(lbl.field_type is None) return font elif j == 2 and self.link_index(index): font = QFont() font.setUnderline(True) return font elif role == Qt.BackgroundColorRole: if j == 0: return constants.LABEL_COLORS[lbl.color_index] elif j == 3: if (lbl.value_type_index == 2 and not self.controller.sim_expression_parser.validate_expression(lbl.formula)[0]): return constants.ERROR_BG_COLOR elif role == Qt.TextColorRole: if self.link_index(index): return qApp.palette().link().color()
class GalleryLists(QListWidget): CREATE_LIST_TYPE = misc.CustomListItem.UserType + 1 GALLERY_LIST_CLICKED = pyqtSignal(gallerydb.GalleryList) GALLERY_LIST_REMOVED = pyqtSignal() def __init__(self, parent): super().__init__(parent) self.gallery_list_edit = GalleryListEdit(parent.parent_widget) self.gallery_list_edit.hide() self._g_list_icon = app_constants.G_LISTS_ICON self._font_selected = QFont(self.font()) self._font_selected.setBold(True) self._font_selected.setUnderline(True) self.itemDoubleClicked.connect(self._item_double_clicked) self.setItemDelegate(ListDelegate(self)) self.itemDelegate().closeEditor.connect(self._add_new_list) self.setEditTriggers(self.NoEditTriggers) self.viewport().setAcceptDrops(True) self._in_proccess_item = None self.current_selected = None self.gallery_list_edit.apply.connect(lambda: self._item_double_clicked(self.current_selected)) self.setup_lists() def dragEnterEvent(self, event): if event.mimeData().hasFormat("list/gallery"): event.acceptProposedAction() else: event.ignore() def dragMoveEvent(self, event): item = self.itemAt(event.pos()) self.clearSelection() if item: item.setSelected(True) event.accept() def dropEvent(self, event): galleries = [] galleries = pickle.loads(event.mimeData().data("list/gallery").data()) g_list_item = self.itemAt(event.pos()) if galleries and g_list_item: txt = "{} galleries".format(len(galleries)) if len(galleries) > 1 else galleries[0].title app_constants.NOTIF_BUBBLE.update_text(g_list_item.item.name, 'Added: {}!'.format(txt), 7) log_i('Added {} to {}...'.format(txt, g_list_item.item.name)) g_list_item.item.add_gallery(galleries) super().dropEvent(event) def _add_new_list(self, lineedit=None, hint=None, gallery_list=None): if not self._in_proccess_item.text(): self.takeItem(self.row(self._in_proccess_item)) return new_item = self._in_proccess_item if not gallery_list: new_list = gallerydb.GalleryList(new_item.text()) new_list.add_to_db() else: new_list = gallery_list new_item.item = new_list new_item.setIcon(self._g_list_icon) self.sortItems() def create_new_list(self, name=None, gallery_list=None): new_item = misc.CustomListItem() self._in_proccess_item = new_item new_item.setFlags(new_item.flags() | Qt.ItemIsEditable) new_item.setIcon(QIcon(app_constants.LIST_ICON)) self.insertItem(0, new_item) if name: new_item.setText(name) self._add_new_list(gallery_list=gallery_list) else: self.editItem(new_item) def _item_double_clicked(self, item): if item: self._reset_selected() if item.item.filter: app_constants.NOTIF_BUBBLE.update_text(item.item.name, "Updating list..", 5) gallerydb.execute(item.item.scan, True) self.GALLERY_LIST_CLICKED.emit(item.item) item.setFont(self._font_selected) self.current_selected = item def _reset_selected(self): if self.current_selected: self.current_selected.setFont(self.font()) def setup_lists(self): for g_l in app_constants.GALLERY_LISTS: if g_l.type == gallerydb.GalleryList.REGULAR: self.create_new_list(g_l.name, g_l) def contextMenuEvent(self, event): item = self.itemAt(event.pos()) if item and item.type() != self.CREATE_LIST_TYPE: menu = GalleryListContextMenu(item, self) menu.exec_(event.globalPos()) event.accept() return event.ignore()
def setupTextActions(self): tb = QToolBar(self) tb.setWindowTitle("Format Actions") self.addToolBar(tb) menu = QMenu("F&ormat", self) self.menuBar().addMenu(menu) self.actionTextBold = QAction( QIcon.fromTheme('format-text-bold', QIcon(rsrcPath + '/textbold.png')), "&Bold", self, priority=QAction.LowPriority, shortcut=Qt.CTRL + Qt.Key_B, triggered=self.textBold, checkable=True) bold = QFont() bold.setBold(True) self.actionTextBold.setFont(bold) tb.addAction(self.actionTextBold) menu.addAction(self.actionTextBold) self.actionTextItalic = QAction( QIcon.fromTheme('format-text-italic', QIcon(rsrcPath + '/textitalic.png')), "&Italic", self, priority=QAction.LowPriority, shortcut=Qt.CTRL + Qt.Key_I, triggered=self.textItalic, checkable=True) italic = QFont() italic.setItalic(True) self.actionTextItalic.setFont(italic) tb.addAction(self.actionTextItalic) menu.addAction(self.actionTextItalic) self.actionTextUnderline = QAction( QIcon.fromTheme('format-text-underline', QIcon(rsrcPath + '/textunder.png')), "&Underline", self, priority=QAction.LowPriority, shortcut=Qt.CTRL + Qt.Key_U, triggered=self.textUnderline, checkable=True) underline = QFont() underline.setUnderline(True) self.actionTextUnderline.setFont(underline) tb.addAction(self.actionTextUnderline) menu.addAction(self.actionTextUnderline) menu.addSeparator() grp = QActionGroup(self, triggered=self.textAlign) # Make sure the alignLeft is always left of the alignRight. if QApplication.isLeftToRight(): self.actionAlignLeft = QAction( QIcon.fromTheme('format-justify-left', QIcon(rsrcPath + '/textleft.png')), "&Left", grp) self.actionAlignCenter = QAction( QIcon.fromTheme('format-justify-center', QIcon(rsrcPath + '/textcenter.png')), "C&enter", grp) self.actionAlignRight = QAction( QIcon.fromTheme('format-justify-right', QIcon(rsrcPath + '/textright.png')), "&Right", grp) else: self.actionAlignRight = QAction( QIcon.fromTheme('format-justify-right', QIcon(rsrcPath + '/textright.png')), "&Right", grp) self.actionAlignCenter = QAction( QIcon.fromTheme('format-justify-center', QIcon(rsrcPath + '/textcenter.png')), "C&enter", grp) self.actionAlignLeft = QAction( QIcon.fromTheme('format-justify-left', QIcon(rsrcPath + '/textleft.png')), "&Left", grp) self.actionAlignJustify = QAction( QIcon.fromTheme('format-justify-fill', QIcon(rsrcPath + '/textjustify.png')), "&Justify", grp) self.actionAlignLeft.setShortcut(Qt.CTRL + Qt.Key_L) self.actionAlignLeft.setCheckable(True) self.actionAlignLeft.setPriority(QAction.LowPriority) self.actionAlignCenter.setShortcut(Qt.CTRL + Qt.Key_E) self.actionAlignCenter.setCheckable(True) self.actionAlignCenter.setPriority(QAction.LowPriority) self.actionAlignRight.setShortcut(Qt.CTRL + Qt.Key_R) self.actionAlignRight.setCheckable(True) self.actionAlignRight.setPriority(QAction.LowPriority) self.actionAlignJustify.setShortcut(Qt.CTRL + Qt.Key_J) self.actionAlignJustify.setCheckable(True) self.actionAlignJustify.setPriority(QAction.LowPriority) tb.addActions(grp.actions()) menu.addActions(grp.actions()) menu.addSeparator() pix = QPixmap(16, 16) pix.fill(Qt.black) self.actionTextColor = QAction(QIcon(pix), "&Color...", self, triggered=self.textColor) tb.addAction(self.actionTextColor) menu.addAction(self.actionTextColor) tb = QToolBar(self) tb.setAllowedAreas(Qt.TopToolBarArea | Qt.BottomToolBarArea) tb.setWindowTitle("Format Actions") self.addToolBarBreak(Qt.TopToolBarArea) self.addToolBar(tb) comboStyle = QComboBox(tb) tb.addWidget(comboStyle) comboStyle.addItem("Standard") comboStyle.addItem("Bullet List (Disc)") comboStyle.addItem("Bullet List (Circle)") comboStyle.addItem("Bullet List (Square)") comboStyle.addItem("Ordered List (Decimal)") comboStyle.addItem("Ordered List (Alpha lower)") comboStyle.addItem("Ordered List (Alpha upper)") comboStyle.addItem("Ordered List (Roman lower)") comboStyle.addItem("Ordered List (Roman upper)") comboStyle.activated.connect(self.textStyle) self.comboFont = QFontComboBox(tb) tb.addWidget(self.comboFont) self.comboFont.activated[str].connect(self.textFamily) self.comboSize = QComboBox(tb) self.comboSize.setObjectName("comboSize") tb.addWidget(self.comboSize) self.comboSize.setEditable(True) db = QFontDatabase() for size in db.standardSizes(): self.comboSize.addItem("%s" % (size)) self.comboSize.activated[str].connect(self.textSize) self.comboSize.setCurrentIndex( self.comboSize.findText( "%s" % (QApplication.font().pointSize())))
class GalleryLists(QListWidget): CREATE_LIST_TYPE = misc.CustomListItem.UserType+1 GALLERY_LIST_CLICKED = pyqtSignal(gallerydb.GalleryList) GALLERY_LIST_REMOVED = pyqtSignal() def __init__(self, parent): super().__init__(parent) self._g_list_icon = QIcon(app_constants.GLIST_PATH) self._font_selected = QFont(self.font()) self._font_selected.setBold(True) self._font_selected.setUnderline(True) self.itemDoubleClicked.connect(self._item_double_clicked) self.setItemDelegate(ListDelegate(self)) self.itemDelegate().closeEditor.connect(self._add_new_list) self.setEditTriggers(self.NoEditTriggers) self._in_proccess_item = None self.current_selected = None def _add_new_list(self, lineedit=None, hint=None, gallery_list=None): if not self._in_proccess_item.text(): self.takeItem(self.row(self._in_proccess_item)) return new_item = self._in_proccess_item if not gallery_list: new_list = gallerydb.GalleryList(new_item.text()) new_list.add_to_db() else: new_list = gallery_list new_item.item = new_list new_item.setIcon(self._g_list_icon) self.sortItems() def create_new_list(self, name=None, gallery_list=None): new_item = misc.CustomListItem() self._in_proccess_item = new_item new_item.setFlags(new_item.flags() | Qt.ItemIsEditable) new_item.setIcon(QIcon(app_constants.LIST_PATH)) self.insertItem(0, new_item) if name: new_item.setText(name) self._add_new_list(gallery_list=gallery_list) else: self.editItem(new_item) def _item_double_clicked(self, item): if item: if item.type() == self.CREATE_LIST_TYPE: self.create_new_list() else: self._reset_selected() if item.item.filter: gallerydb.add_method_queue(item.item.scan, True) self.GALLERY_LIST_CLICKED.emit(item.item) item.setFont(self._font_selected) self.current_selected = item def _reset_selected(self): if self.current_selected: self.current_selected.setFont(self.font()) def setup_lists(self): for g_l in app_constants.GALLERY_LISTS: self.create_new_list(g_l.name, g_l) def contextMenuEvent(self, event): item = self.itemAt(event.pos()) if item and item.type() != self.CREATE_LIST_TYPE: menu = GalleryListContextMenu(item, self) menu.exec_(event.globalPos()) event.accept() return event.ignore()