def data(self, role=Qt.DisplayRole, *args, **kwargs): if role == Qt.DisplayRole: value = self.collapsed_format(self.value) if isinstance(value, str) and value.isnumeric(): value = int(value) if self.field == 'file': value = os.path.basename(value) return value elif role == Qt.DecorationRole: if self.field == 'file': icon_type = QFileIconProvider.File return QFileIconProvider().icon(icon_type) elif role == Qt.ToolTipRole: if len(self.value) > 1: return json.dumps(self.value) elif role == Qt.EditRole: return json.dumps(self.value) elif role == Qt.FontRole: fontdb = QFontDatabase() if self.field == 'key': return fontdb.systemFont(QFontDatabase.FixedFont) else: return fontdb.systemFont(QFontDatabase.GeneralFont) elif role == Qt.UserRole: return self.value
def set_font(self, font: QFont = None): qfd = QFontDatabase() if font: info = QFontInfo(font) if info.styleHint() != QFont.Monospace: self.logger.warning("font: Please use monospaced font! " f"Unsupported font {info.family}.") font = qfd.systemFont(QFontDatabase.FixedFont) elif "Menlo" in qfd.families(): font = QFont("Menlo") info = QFontInfo(font) else: font = qfd.systemFont(QFontDatabase.FixedFont) info = QFontInfo(font) font.setPointSize(12) self.font = font metrics = QFontMetrics(font) self.char_width = metrics.horizontalAdvance("A") self.char_height = metrics.height() self.line_height = int(self.char_height * 1.2) self.logger.info(f"font: Font {info.family()} selected, character " f"size {self.char_width}x{self.char_height}.") self.row_len = int(self._width / self.char_width) self.col_len = int(self._height / self.line_height)
def create_encrypt_tab(self): w = QWidget() layout = QGridLayout(w) message_e = QTextEdit() layout.addWidget(QLabel(_('Message')), 1, 0) layout.addWidget(message_e, 1, 1) layout.setRowStretch(2, 2) recipient_e = QTextEdit() recipient_e.setPlaceholderText('''-----BEGIN PGP PUBLIC KEY BLOCK-----''') recipient_e.setFont(QFontDatabase.systemFont(QFontDatabase.FixedFont)) layout.addWidget(QLabel(_('Recipient key')), 2, 0) layout.addWidget(recipient_e, 2, 1) encrypted_e = QTextEdit() encrypted_e.setFont(QFontDatabase.systemFont(QFontDatabase.FixedFont)) layout.addWidget(QLabel(_('Encrypted')), 3, 0) layout.addWidget(encrypted_e, 3, 1) layout.setRowStretch(3, 1) hbox = QHBoxLayout() b = QPushButton(_('Encrypt')) b.clicked.connect(lambda: self.do_encrypt(message_e, recipient_e, encrypted_e)) hbox.addWidget(b) b = QPushButton(_('Decrypt')) b.clicked.connect(lambda: self.do_decrypt(encrypted_e, message_e)) hbox.addWidget(b) layout.addLayout(hbox, 4, 1) return w
def load(self): """ Load window. """ self.ui = self.loader.request_ui("ui/debug_dialogs/logs", self) self.logger = self.loader.request_library("common_libs", "logger") # Set monospace font. font = QFontDatabase.systemFont(QFontDatabase.FixedFont) self.ui.main_log.setFont(font) # UI work. # Load configuration for filters. self.__load_configuration() # Connect UI elements to methods. self.__connect_signals() # Execute default actions for dialog opening. self.on_dialog_open() self.ui.show() # Load current set of log lines. self.load_logs() # Register callback. self.logger.register_callback("logsdialog", self.append_line)
def __init__(self, job_name, info): super().__init__() self.job = job_name self.info = info self.lbl_heading = QLabel('Infos on {}'.format(self.job), self) self.lbl_heading.setFont(QFont(self.font().family(), 18)) self.txt_info = QTextEdit(self) self.txt_info.setText(info) self.txt_info.setFont(QFontDatabase.systemFont( QFontDatabase.FixedFont)) self.txt_info.setReadOnly(True) self.btn_ok = QPushButton('OK', self) self.btn_ok.clicked.connect(self.close) self.vbox = QVBoxLayout() self.vbox.addWidget(self.lbl_heading) self.vbox.addWidget(self.txt_info) self.vbox.addWidget(self.btn_ok) self.setLayout(self.vbox) self.setGeometry(0, 0, 900, 700) qtRectangle = self.frameGeometry() centerPoint = QDesktopWidget().availableGeometry().center() qtRectangle.moveCenter(centerPoint) self.move(qtRectangle.topLeft()) self.show()
def __init__(self): super(__class__, self).__init__() self.graph_canvas = GraphCanvas() self.domain_canvas = DomainCanvas() self.marker_plotter = None self.worker_thread = QThread() self.worker = QtApi() self.digest.connect(self.worker.on_digest) self.decompose.connect(self.worker.on_decompose) self.worker.handle_status_message.connect(self.status_message_handler) self.worker.handle_graph_axes.connect(self.graph_axes_handler) self.worker.handle_domain_axes.connect(self.domain_axes_handler) self.worker.handle_generators.connect(self.generators_handler) self.worker.handle_decomposition.connect(self.decomposition_handler) self.worker.handle_markers_state_plotted.connect(self.on_markers_state_plotted) self.worker.handle_markers.connect(self.on_markers) self.worker.moveToThread(self.worker_thread) self.worker_thread.start() self.central_widget = QWidget(self) self.status_bar = QStatusBar() self.subgroup_combo_box = None self.number_line_edit = None self.generators_text_edit = None self.matrix_line_edit = None self.decomposition_text_edit = None self.MONOSPACE_FONT = QFontDatabase.systemFont(QFontDatabase.FixedFont) self.init_ui()
def __init__(self): super(MainWindow, self).__init__() uiPath = resourceFileName('crispy:' + os.path.join('gui', 'uis', 'main.ui')) loadUi(uiPath, baseinstance=self, package='crispy.gui') # Default elements of the main window. self.setWindowTitle('Crispy - untitled.lua') self.statusbar.showMessage('Ready') # Splitter. upperPanelHeight = 500 lowerPanelHeight = 600 - upperPanelHeight self.splitter.setSizes((upperPanelHeight, lowerPanelHeight)) # Logger widget. font = QFontDatabase.systemFont(QFontDatabase.FixedFont) font.setPointSize(font.pointSize() + 1) self.loggerWidget.setFont(font) self.loggerWidget.setLineWrapMode(QPlainTextEdit.NoWrap) # About dialog. self.aboutDialog = AboutDialog(self) self.openAboutDialogAction.triggered.connect(self.openAboutDialog) # Quanty module. self.quantyModuleInit()
def __init__(self, asset_path: Union[Path, str]) -> None: super().__init__(asset_path) self.gui_font_db = QFontDatabase() self.load_new_fonts() self.gui_font = qApp.font() self.gui_font_fixed = QFontDatabase.systemFont(QFontDatabase.FixedFont)
def _game_layout(self): game_layout_container = QWidget() game_layout_container.setDisabled(True) game_layout = QVBoxLayout(game_layout_container) game_combo_box = QComboBox() game_label = QLabel("&Peli:") game_label.setBuddy(game_combo_box) game_selection_layout = QHBoxLayout() game_selection_layout.addWidget(game_label) game_selection_layout.addWidget(game_combo_box) game_send_layout_container = QWidget() game_send_layout = QVBoxLayout(game_send_layout_container) text_edit = QTextEdit() font: QFont = QFontDatabase.systemFont(QFontDatabase.FixedFont) font.setPointSize(12) text_edit.setFont(font) text_edit.setLineWrapMode(QTextEdit.NoWrap) text_edit.setAcceptRichText(False) self.text_edit = text_edit game_send_layout.addWidget(text_edit) self.game_send_layout_container = game_send_layout_container send_btn = QPushButton("Osta rivit") send_btn.setDefault(True) self.send_btn = send_btn game_send_layout.addWidget(send_btn) game_layout.addLayout(game_selection_layout) game_layout.addWidget(game_send_layout_container) self.game_combo_box = game_combo_box self.game_layout_container = game_layout_container return game_layout_container
def __init__(self, app, parent=None): super().__init__(parent) self._app = app # self.setPlaceholderText('搜索歌曲、歌手、专辑、用户;执行 Python 代码等') self.setPlaceholderText('Search library, exec code, or run command.') self.setToolTip('直接输入文字可以进行过滤,按 Enter 可以搜索\n' '输入 >>> 前缀之后,可以执行 Python 代码\n' '输入 $ 前缀可以执行 fuo 命令(未实现,欢迎 PR)') self.setFont(QFontDatabase.systemFont(QFontDatabase.FixedFont)) # 模拟 QLineEdit self.setTabChangesFocus(True) self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.setWordWrapMode(QTextOption.NoWrap) self.setFixedHeight(self.sizeHint().height()) self.setMinimumHeight(25) self._timer = QTimer(self) self._cmd_text = None self._mode = 'cmd' # 详见 _set_mode 函数 self._timer.timeout.connect(self.__on_timeout) self.textChanged.connect(self.__on_text_edited) self._highlighter = Highlighter(self.document()) # self.textEdited.connect(self.__on_text_edited) self.returnPressed.connect(self.__on_return_pressed)
def drawWindow(self): if self.layout() is not None: tempWidget = QWidget() tempWidget.setLayout(self.layout()) gridLayout = QGridLayout() # add header gridLayout.addWidget(QLabel('Libraries'), 0, 0) gridLayout.addWidget(QLabel(''), 0, 1) # add new library edit box self.libraryNameEdit = QLineEdit() fixedWidthFont = QFontDatabase.systemFont(QFontDatabase.FixedFont) self.libraryNameEdit.setFont(fixedWidthFont) gridLayout.addWidget(self.libraryNameEdit, 1, 0) self.addButton = QPushButton('Add') self.addButton.clicked.connect(self.addClicked) gridLayout.addWidget(self.addButton, 1, 1) self.buttons = {} row = 2 for lib in self.libraries: gridLayout.addWidget(QLabel(lib), row, 0) deleteButton = QPushButton() deleteButton.setObjectName(lib) deleteButton.setText('Delete') deleteButton.clicked.connect(self.deleteButtonClicked) gridLayout.addWidget(deleteButton, row, 1) row += 1 self.buttons[deleteButton] = lib self.resize(300, 100) self.setLayout(gridLayout)
def __init__(self, parent=None): super(ScriptWindow, self).__init__(parent) self.setGeometry(100, 100, 800, 600) self.parent = parent font = QFontDatabase.systemFont(QFontDatabase.FixedFont) font.setFixedPitch(True) font.setPointSize(10) self.editor = QPlainTextEdit() self.editor.setFont(font) self.editor.setTabStopWidth(self.editor.fontMetrics().width(" ") * 4) self.highlight = PythonHighlighter(self.editor.document()) self.editor.setPlainText("# self.parent is the main GUI handle") self.runScriptButton = QPushButton("Run script") self.layout = QVBoxLayout() self.layout.addWidget(self.editor) self.layout.addWidget(self.runScriptButton) self.setLayout(self.layout) self.setWindowTitle("Script editor") self.setup_button_behavior() self.show()
def __init__(self, app, parent=None): super().__init__(parent) self._app = app self.setPlaceholderText('搜索歌曲、歌手、专辑、用户') self.setToolTip('直接输入文字可以进行过滤,按 Enter 可以搜索\n' '输入 >>> 前缀之后,可以执行 Python 代码\n' '输入 # 前缀之后,可以过滤表格内容\n' '输入 > 前缀可以执行 fuo 命令(未实现,欢迎 PR)') self.setFont(QFontDatabase.systemFont(QFontDatabase.FixedFont)) self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) self.setFixedHeight(32) self.setFrame(False) self.setAttribute(Qt.WA_MacShowFocusRect, 0) self.setTextMargins(5, 0, 0, 0) self._timer = QTimer(self) self._cmd_text = None self._mode = 'cmd' # 详见 _set_mode 函数 self._timer.timeout.connect(self.__on_timeout) self.textChanged.connect(self.__on_text_edited) # self.textEdited.connect(self.__on_text_edited) self.returnPressed.connect(self.__on_return_pressed) self._app.hotkey_mgr.register( [QKeySequence('Ctrl+F'), QKeySequence(':'), QKeySequence('Alt+x')], self.setFocus)
def __init__(self, connection, terminal): super(TerminalDialog, self).__init__(None, Qt.WindowCloseButtonHint) self.setupUi(self) self.connection = connection self.terminal = terminal self.terminal_listener = Listener(self.emit_update_content) self._update_content_signal.connect(self.update_content) self.terminal.add_event.connect(self.terminal_listener) self.outputTextEdit.verticalScrollBar().sliderPressed.connect(lambda: self.autoscrollCheckBox.setChecked(False)) self.outputTextEdit.verticalScrollBar().installEventFilter(self) self.inputTextBox.installEventFilter(self) self.clearButton.clicked.connect(self.clear_content) self.sendButton.clicked.connect(self.send_input) self.ctrlaButton.clicked.connect(lambda: self.send_control("a")) self.ctrlbButton.clicked.connect(lambda: self.send_control("b")) self.ctrlcButton.clicked.connect(lambda: self.send_control("c")) self.ctrldButton.clicked.connect(lambda: self.send_control("d")) self.ctrleButton.clicked.connect(lambda: self.send_control("e")) fixed_font = QFontDatabase.systemFont(QFontDatabase.FixedFont) self.outputTextEdit.setFont(fixed_font) self.inputTextBox.setFont(fixed_font) self.autoscrollCheckBox.setChecked(True) self.terminal.read() self.outputTextEdit.setText(self.terminal.history) self._input_history_index = 0
def create_signature_tab(self): w = QWidget() layout = QGridLayout(w) message_e = QTextEdit() layout.addWidget(QLabel(_('Message')), 1, 0) layout.addWidget(message_e, 1, 1) layout.setRowStretch(2, 2) encrypted_e = QTextEdit() encrypted_e.setFont(QFontDatabase.systemFont(QFontDatabase.FixedFont)) layout.addWidget(QLabel(_('Signed')), 2, 0) layout.addWidget(encrypted_e, 2, 1) layout.setRowStretch(2, 2) hbox = QHBoxLayout() b = QPushButton(_('Sign')) b.clicked.connect(lambda: self.do_sign(message_e, encrypted_e)) hbox.addWidget(b) b = QPushButton(_('Verify')) b.clicked.connect(lambda: self.do_verify(encrypted_e, message_e)) hbox.addWidget(b) layout.addLayout(hbox, 3, 1) return w
def __init__(self, parent: QWidget = None): super().__init__(parent) self.setupUi(self) self.m_content = Document() self.m_filePath = "" self.editor.setFont(QFontDatabase.systemFont(QFontDatabase.FixedFont)) self.preview.setContextMenuPolicy(Qt.NoContextMenu) page = PreviewPage(self) self.preview.setPage(page) self.editor.textChanged.connect( lambda: self.m_content.setText(self.editor.toPlainText())) channel = QWebChannel(self) channel.registerObject("content", self.m_content) page.setWebChannel(channel) self.preview.setUrl(QUrl("qrc:/index.html")) self.actionNew.triggered.connect(self.onFileNew) self.actionOpen.triggered.connect(self.onFileOpen) self.actionSave.triggered.connect(self.onFileSave) self.actionSaveAs.triggered.connect(self.onFileSaveAs) self.actionExit.triggered.connect(self.onExit) self.editor.document().modificationChanged.connect( self.actionSave.setEnabled) defaultTextFile = QFile(":/default.md") defaultTextFile.open(QIODevice.ReadOnly) self.editor.setPlainText(defaultTextFile.readAll().data().decode())
def __init__(self, parent): super().__init__(parent) font = QFontDatabase.systemFont(QFontDatabase.FixedFont) font.setPointSize(8) self.setFont(font) self.setPlainText("...")
def __init__(self, code): super(QDialog, self).__init__() self.codeEdit = QsciScintilla() self.codeEdit.setText(code) fixedWidthFont = QFontDatabase.systemFont(QFontDatabase.FixedFont) self.codeEdit.setFont(fixedWidthFont) fontmetrics = QFontMetrics(fixedWidthFont) self.codeEdit.setMarginWidth(0, fontmetrics.width("000")) self.codeEdit.setMarginLineNumbers(0, True) self.codeEdit.setMarginsBackgroundColor(QColor("#cccccc")) self.codeEdit.setBraceMatching(QsciScintilla.SloppyBraceMatch) self.codeEdit.setCaretLineVisible(True) self.codeEdit.setCaretLineBackgroundColor(QColor("#ffe4e4")) lexer = QsciLexerPython() lexer.setDefaultFont(fixedWidthFont) self.codeEdit.setLexer(lexer) self.codeEdit.SendScintilla(QsciScintilla.SCI_SETHSCROLLBAR, 0) self.codeEdit.setUtf8(True) self.codeEdit.setTabWidth(4) self.codeEdit.setIndentationsUseTabs(True) self.codeEdit.setIndentationGuides(True) self.codeEdit.setTabIndents(True) self.codeEdit.setAutoIndent(True) verticalLayout = QVBoxLayout() verticalLayout.addWidget(self.codeEdit) self.setLayout(verticalLayout) self.codeEdit.textChanged.connect(self.changeCode)
def __init__(self, timestamp, topic, payload, *args, **kwargs): super(PayloadViewDialog, self).__init__(*args, **kwargs) self.setMinimumWidth(500) self.setWindowTitle("View payload") fl = QFormLayout() lb_timestamp = QLabel(timestamp) le_topic = QLineEdit() le_topic.setReadOnly(True) le_topic.setText(topic) fnt_mono = QFontDatabase.systemFont(QFontDatabase.FixedFont) pte_payload = QPlainTextEdit() pte_payload.setFont(fnt_mono) pte_payload.setMinimumHeight(400) pte_payload.setReadOnly(True) if payload: payload = str(payload) if payload.startswith("{") or payload.startswith("["): pte_payload.setPlainText(dumps(loads(payload), indent=2)) else: pte_payload.setPlainText(payload) else: pte_payload.setPlainText("(empty)") fl.addWidget(lb_timestamp) fl.addRow("Topic", le_topic) fl.addRow("Payload", pte_payload) self.setLayout(fl)
def initUI(self): self.setupUi(self) self.btcusdModel = QStandardItemModel(self.btcusdListView) self.btcusdModelIndex = QModelIndex() self.btcusdModelIndex = self.btcusdModel.createIndex( self.cutoff + 1, 0) self.btcusdListView.setModel(self.btcusdModel) self.ethusdModel = QStandardItemModel(self.ethusdListView) self.ethusdModelIndex = QModelIndex() self.ethusdModelIndex = self.ethusdModel.createIndex( self.cutoff + 1, 0) self.ethusdListView.setModel(self.ethusdModel) self.ethbtcModel = QStandardItemModel(self.ethbtcListView) self.ethbtcModelIndex = QModelIndex() self.ethbtcModelIndex = self.ethbtcModel.createIndex( self.cutoff + 1, 0) self.ethbtcListView.setModel(self.ethbtcModel) # Set fixed-width font fixedFont = QFontDatabase.systemFont(1) self.btcusdListView.setFont(fixedFont) self.ethusdListView.setFont(fixedFont) self.ethbtcListView.setFont(fixedFont) # Connect actions self.closeButton.clicked.connect(self.close)
def __init__(self, name, timeValue): super(QDialog, self).__init__() self.resize(300, 150) timeContainer = QGroupBox() timeContainer.setTitle('Time (ms)') self.lineEdit = QLineEdit() fixedWidthFont = QFontDatabase.systemFont(QFontDatabase.FixedFont) self.lineEdit.setFont(fixedWidthFont) self.lineEdit.setText(str(timeValue)) vLayout = QVBoxLayout() vLayout.addWidget(self.lineEdit) self.cancelButton = QPushButton() self.cancelButton.setText('Cancel') self.cancelButton.clicked.connect(self.cancelClicked) self.acceptButton = QPushButton() self.acceptButton.setText('Accept') self.acceptButton.clicked.connect(self.acceptClicked) buttonContainer = QWidget() hLayout = QHBoxLayout() hLayout.addWidget(self.cancelButton) hLayout.addWidget(self.acceptButton) buttonContainer.setLayout(hLayout) vLayout.addWidget(buttonContainer) timeContainer.setLayout(vLayout) vLayout2 = QVBoxLayout() vLayout2.addWidget(timeContainer) self.setLayout(vLayout2)
def drawWindow(self): if self.layout() is not None: tempWidget = QWidget() tempWidget.setLayout(self.layout()) gridLayout = QGridLayout() # add header gridLayout.addWidget(QLabel('Libraries'), 0, 0) gridLayout.addWidget(QLabel(''), 0, 1) # add new library edit box self.libraryNameEdit = QLineEdit() fixedWidthFont = QFontDatabase.systemFont(QFontDatabase.FixedFont) self.libraryNameEdit.setFont(fixedWidthFont) gridLayout.addWidget(self.libraryNameEdit, 1, 0) self.addButton = QPushButton('Add') self.addButton.clicked.connect(self.addClicked) gridLayout.addWidget(self.addButton, 1, 1) self.buttons = {} row = 2 for lib in self.libraries: gridLayout.addWidget(QLabel(lib), row, 0) deleteButton = QPushButton() deleteButton.setObjectName(lib) deleteButton.setText('Delete') deleteButton.clicked.connect(self.deleteButtonClicked) gridLayout.addWidget(deleteButton, row, 1) row += 1 self.buttons[deleteButton] = lib self.resize(300, 100) self.setLayout(gridLayout)
def __init__(self): super(MainWindow, self).__init__() uiPath = resourceFileName(os.path.join('gui', 'uis', 'main.ui')) loadUi(uiPath, baseinstance=self, package='crispy.gui') self.setWindowTitle('Crispy - untitled.lua') self.splitter.setSizes((600, 0)) self.statusbar.showMessage('Ready') font = QFontDatabase.systemFont(QFontDatabase.FixedFont) font.setPointSize(font.pointSize() + 1) self.loggerWidget.setFont(font) self.loggerWidget.setLineWrapMode(QPlainTextEdit.NoWrap) # Quanty self.quantyDockWidget = QuantyDockWidget() self.addDockWidget(Qt.RightDockWidgetArea, self.quantyDockWidget) self.quantyDockWidget.setVisible(True) self.quantyRunCalculationAction.triggered.connect( self.quantyDockWidget.runCalculation) self.quantySaveInputAction.triggered.connect( self.quantyDockWidget.saveInput) self.quantySaveAsInputAction.triggered.connect( self.quantyDockWidget.saveInputAs) self.quantyLoadCalculations.triggered.connect( self.quantyDockWidget.loadCalculations) self.quantyRemoveAllCalculations.triggered.connect( self.quantyDockWidget.removeAllCalculations) self.quantyModuleShowAction.triggered.connect(self.quantyModuleShow) self.quantyModuleHideAction.triggered.connect(self.quantyModuleHide)
def __init__(self, parent): super().__init__(parent) font = QFontDatabase.systemFont(QFontDatabase.FixedFont) font.setPointSize(8) self.setFont(font) self.setPlainText("...")
def __init__(self, name, timeValue): super(QDialog, self).__init__() self.resize(300, 150) timeContainer = QGroupBox() timeContainer.setTitle('Time (ms)') self.lineEdit = QLineEdit() fixedWidthFont = QFontDatabase.systemFont(QFontDatabase.FixedFont) self.lineEdit.setFont(fixedWidthFont) self.lineEdit.setText(str(timeValue)) vLayout = QVBoxLayout() vLayout.addWidget(self.lineEdit) self.cancelButton = QPushButton() self.cancelButton.setText('Cancel') self.cancelButton.clicked.connect(self.cancelClicked) self.acceptButton = QPushButton() self.acceptButton.setText('Accept') self.acceptButton.clicked.connect(self.acceptClicked) buttonContainer = QWidget() hLayout = QHBoxLayout() hLayout.addWidget(self.cancelButton) hLayout.addWidget(self.acceptButton) buttonContainer.setLayout(hLayout) vLayout.addWidget(buttonContainer) timeContainer.setLayout(vLayout) vLayout2 = QVBoxLayout() vLayout2.addWidget(timeContainer) self.setLayout(vLayout2)
def __init__(self, app, parent=None): super().__init__(parent) self._app = app # self.setPlaceholderText('搜索歌曲、歌手、专辑、用户;执行 Python 代码等') self.setFrameShape(QFrame.NoFrame) self.setPlaceholderText('Search library, exec code, or run command.') self.setToolTip('直接输入文字可以进行过滤,按 Enter 可以搜索\n' '输入 >>> 前缀之后,可以执行 Python 代码\n' '输入 $ 前缀可以执行 fuo 命令(未实现,欢迎 PR)') self.setFont(QFontDatabase.systemFont(QFontDatabase.FixedFont)) # 模拟 QLineEdit self.setTabChangesFocus(True) self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.setWordWrapMode(QTextOption.NoWrap) self.setFixedHeight(self.sizeHint().height()) self.setMinimumHeight(25) self._timer = QTimer(self) self._cmd_text = None self._mode = 'cmd' # 详见 _set_mode 函数 self._timer.timeout.connect(self.__on_timeout) self.textChanged.connect(self.__on_text_edited) self._highlighter = Highlighter(self.document()) # self.textEdited.connect(self.__on_text_edited) self.returnPressed.connect(self.__on_return_pressed)
def __init__(self, config, *args, **kwargs): super(MainWindow, self).__init__(*args, **kwargs) self.config = config # Setup the UI self.setupUi(self) fixed_font = QFontDatabase.systemFont(QFontDatabase.FixedFont) fixed_font.setPointSize(8) #self.inputSentLE.setFont(fixed_font) #self.generatedTE.setFont(fixed_font) self.amrTE.setFont(fixed_font) self.show() # Setup the signals/slots for buttons self.exitPB.pressed.connect(self.exit_slot) self.toAmrPB.pressed.connect(self.parse_slot) self.generatePB.pressed.connect(self.generate_slot) self.showGraphPB.pressed.connect(self.show_graph_slot) # Signals/slots for menu itesm self.actionLoadAMR.triggered.connect(self.load_amr_slot) self.actionSaveAMR.triggered.connect(self.save_amr_slot) self.last_open = '.' self.last_save = '.' # Create the processors self.stog_processor = ProcessorSTOG( self.config, disabled=False) # Disable for debug self.gtos_processor = ProcessorGTOS(self.config, disabled=False) # Set the main window title / status with a qtimer self.startup_timer = QTimer(self) self.startup_timer.setInterval(250) # ms self.startup_timer.timeout.connect(self.set_window_title) self.startup_timer.start()
def __init__(self, name, currentValue): super(QDialog, self).__init__() self.setWindowTitle(name) self.resize(800, 600) self.codeEdit = QsciScintilla() self.codeEdit.setText(currentValue) fixedWidthFont = QFontDatabase.systemFont(QFontDatabase.FixedFont) self.codeEdit.setFont(fixedWidthFont) fontmetrics = QFontMetrics(fixedWidthFont) self.codeEdit.setMarginWidth(0, fontmetrics.width("000")) self.codeEdit.setMarginLineNumbers(0, True) self.codeEdit.setMarginsBackgroundColor(QColor("#cccccc")) self.codeEdit.setBraceMatching(QsciScintilla.SloppyBraceMatch) self.codeEdit.setCaretLineVisible(True) self.codeEdit.setCaretLineBackgroundColor(QColor("#ffe4e4")) lexer = QsciLexerPython() lexer.setDefaultFont(fixedWidthFont) self.codeEdit.setLexer(lexer) self.codeEdit.SendScintilla(QsciScintilla.SCI_SETHSCROLLBAR, 0) self.codeEdit.setUtf8(True) self.codeEdit.setTabWidth(4) self.codeEdit.setIndentationsUseTabs(True) self.codeEdit.setIndentationGuides(True) self.codeEdit.setTabIndents(True) self.codeEdit.setAutoIndent(True) self.cancelButton = QPushButton('Cancel') self.cancelButton.clicked.connect(self.cancel) self.acceptButton = QPushButton('Accept') self.acceptButton.clicked.connect(self.accept) self.pythonButton = QRadioButton('Python') self.pythonButton.setChecked(True) self.pythonButton.clicked.connect(self.pythonClicked) self.cppButton = QRadioButton('C++') self.cppButton.clicked.connect(self.cppClicked) hLayout0 = QHBoxLayout() hLayout0.addWidget(self.pythonButton) hLayout0.addWidget(self.cppButton) container0 = QWidget() container0.setLayout(hLayout0) verticalLayout = QVBoxLayout() verticalLayout.addWidget(container0) verticalLayout.addWidget(self.codeEdit) container = QWidget() hLayout =QHBoxLayout() hLayout.addWidget(self.cancelButton) hLayout.addWidget(self.acceptButton) container.setLayout(hLayout) verticalLayout.addWidget(container) self.setLayout(verticalLayout) self.language = 'python'
def __init__(self, name, currentValue): super(QDialog, self).__init__() self.setWindowTitle(name) self.resize(800, 600) self.codeEdit = QsciScintilla() self.codeEdit.setText(currentValue) fixedWidthFont = QFontDatabase.systemFont(QFontDatabase.FixedFont) self.codeEdit.setFont(fixedWidthFont) fontmetrics = QFontMetrics(fixedWidthFont) self.codeEdit.setMarginWidth(0, fontmetrics.width("000")) self.codeEdit.setMarginLineNumbers(0, True) self.codeEdit.setMarginsBackgroundColor(QColor("#cccccc")) self.codeEdit.setBraceMatching(QsciScintilla.SloppyBraceMatch) self.codeEdit.setCaretLineVisible(True) self.codeEdit.setCaretLineBackgroundColor(QColor("#ffe4e4")) lexer = QsciLexerPython() lexer.setDefaultFont(fixedWidthFont) self.codeEdit.setLexer(lexer) self.codeEdit.SendScintilla(QsciScintilla.SCI_SETHSCROLLBAR, 0) self.codeEdit.setUtf8(True) self.codeEdit.setTabWidth(4) self.codeEdit.setIndentationsUseTabs(True) self.codeEdit.setIndentationGuides(True) self.codeEdit.setTabIndents(True) self.codeEdit.setAutoIndent(True) self.cancelButton = QPushButton('Cancel') self.cancelButton.clicked.connect(self.cancel) self.acceptButton = QPushButton('Accept') self.acceptButton.clicked.connect(self.accept) self.pythonButton = QRadioButton('Python') self.pythonButton.setChecked(True) self.pythonButton.clicked.connect(self.pythonClicked) self.cppButton = QRadioButton('C++') self.cppButton.clicked.connect(self.cppClicked) hLayout0 = QHBoxLayout() hLayout0.addWidget(self.pythonButton) hLayout0.addWidget(self.cppButton) container0 = QWidget() container0.setLayout(hLayout0) verticalLayout = QVBoxLayout() verticalLayout.addWidget(container0) verticalLayout.addWidget(self.codeEdit) container = QWidget() hLayout = QHBoxLayout() hLayout.addWidget(self.cancelButton) hLayout.addWidget(self.acceptButton) container.setLayout(hLayout) verticalLayout.addWidget(container) self.setLayout(verticalLayout) self.language = 'python'
def __init__(self, buf, parent=None): super(HexViewWidget, self).__init__() self.setupUi(self) self._buf = buf self._model = HexTableModel(self._buf) self._colored_regions = intervaltree.IntervalTree() self._origins = [] # ripped from pyuic5 ui/hexview.ui # at commit 6c9edffd32706097d7eba8814d306ea1d997b25a # so we can add our custom HexTableView instance self.view = HexTableView(self) sizePolicy = QSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.view.sizePolicy().hasHeightForWidth()) self.view.setSizePolicy(sizePolicy) self.view.setMinimumSize(QSize(660, 0)) self.view.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn) self.view.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) self.view.setSelectionMode(QAbstractItemView.NoSelection) self.view.setShowGrid(False) self.view.setWordWrap(False) self.view.setObjectName("view") self.view.horizontalHeader().setDefaultSectionSize(25) self.view.horizontalHeader().setMinimumSectionSize(25) self.view.verticalHeader().setDefaultSectionSize(21) self.mainLayout.insertWidget(0, self.view) # end rip # TODO: provide a HexViewWidget.setModel method, and don't build it ourselves self.view.setModel(self._model) for i in range(0x10): self.view.setColumnWidth(i, 25) self.view.setColumnWidth(0x10, 12) for i in range(0x11, 0x22): self.view.setColumnWidth(i, 11) self._hsm = HexItemSelectionModel(self._model, self.view) self.view.setSelectionModel(self._hsm) self.view.setContextMenuPolicy(Qt.CustomContextMenu) self.view.customContextMenuRequested.connect(self._handle_context_menu_requested) self._hsm.selectionRangeChanged.connect(self._handle_selection_range_changed) self.originsChanged.connect(self._handle_origins_changed) self.view.moveKeyPressed.connect(self._hsm.handle_move_key) self.view.selectKeyPressed.connect(self._hsm.handle_select_key) f = QFontDatabase.systemFont(QFontDatabase.FixedFont) self.view.setFont(f) self.statusLabel.setFont(f) self.view.setItemDelegate(HexItemDelegate(self._model, self)) self.statusLabel.setText("")
def __init__(self, buf, parent=None): super(HexViewWidget, self).__init__() self.setupUi(self) self._buf = buf self._model = HexTableModel(self._buf) self._colored_regions = intervaltree.IntervalTree() self._origins = [] # ripped from pyuic5 ui/hexview.ui # at commit 6c9edffd32706097d7eba8814d306ea1d997b25a # so we can add our custom HexTableView instance self.view = HexTableView(self) sizePolicy = QSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.view.sizePolicy().hasHeightForWidth()) self.view.setSizePolicy(sizePolicy) self.view.setMinimumSize(QSize(660, 0)) self.view.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn) self.view.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) self.view.setSelectionMode(QAbstractItemView.NoSelection) self.view.setShowGrid(False) self.view.setWordWrap(False) self.view.setObjectName("view") self.view.horizontalHeader().setDefaultSectionSize(25) self.view.horizontalHeader().setMinimumSectionSize(25) self.view.verticalHeader().setDefaultSectionSize(21) self.mainLayout.insertWidget(0, self.view) # end rip # TODO: provide a HexViewWidget.setModel method, and don't build it ourselves self.view.setModel(self._model) for i in range(0x10): self.view.setColumnWidth(i, 23) self.view.setColumnWidth(0x10, 12) for i in range(0x11, 0x22): self.view.setColumnWidth(i, 11) self._hsm = HexItemSelectionModel(self._model, self.view) self.view.setSelectionModel(self._hsm) self.view.setContextMenuPolicy(Qt.CustomContextMenu) self.view.customContextMenuRequested.connect(self._handle_context_menu_requested) self._hsm.selectionRangeChanged.connect(self._handle_selection_range_changed) self.originsChanged.connect(self._handle_origins_changed) self.view.moveKeyPressed.connect(self._hsm.handle_move_key) self.view.selectKeyPressed.connect(self._hsm.handle_select_key) f = QFontDatabase.systemFont(QFontDatabase.FixedFont) self.view.setFont(f) self.statusLabel.setFont(f) self.view.setItemDelegate(HexItemDelegate(self._model, self)) self.statusLabel.setText("")
def family(self): return idaapi.reg_read_string( 'Name', self._key, 'Consolas' if os.name == 'nt' else QFontDatabase.systemFont(QFontDatabase.FixedFont).family().encode() )
def __init__(self, classifier, *args, **kwargs): super().__init__(*args, **kwargs) self.classifier = classifier self.tf_session = tf.Session() self.setReadOnly(True) self.setFont(QFontDatabase.systemFont(QFontDatabase.FixedFont)) # monospace self.setFontPointSize(10) self.setInfo()
def get_monospaced_font(size): ''' Takes a size and finds a monospaced font from system fonts, sets the font size and then returns it ''' monospace_font = QFontDatabase.systemFont(QFontDatabase.FixedFont) monospace_font.setPointSize(size) return monospace_font
def __init__(self, name): super(QDialog, self).__init__() self.setWindowTitle(name) self.config = None self.gridLayout = QGridLayout() # add header self.gridLayout.addWidget(QLabel('Server Type'), 0, 0) self.gridLayout.addWidget(QLabel('Name'), 0, 1) self.gridLayout.addWidget(QLabel('Topic'), 0, 2) self.gridLayout.addWidget(QLabel('Proxy Name'), 0, 3) self.gridLayout.addWidget(QLabel('IP'), 0, 4) self.gridLayout.addWidget(QLabel('Port'), 0, 5) self.gridLayout.addWidget(QLabel('Interface'), 0, 6) self.gridLayout.addWidget(QLabel(''), 0, 7) # add new config input fields fixedWidthFont = QFontDatabase.systemFont(QFontDatabase.FixedFont) self.serverTypeCombo = QComboBox() self.serverTypeCombo.setFont(fixedWidthFont) self.gridLayout.addWidget(self.serverTypeCombo, 1, 0) self.nameEdit = QLineEdit() self.nameEdit.setFont(fixedWidthFont) self.gridLayout.addWidget(self.nameEdit, 1, 1) self.topicEdit = QLineEdit() self.topicEdit.setFont(fixedWidthFont) self.topicEdit.setEnabled(False) self.gridLayout.addWidget(self.topicEdit, 1, 2) self.proxyNameEdit = QLineEdit() self.proxyNameEdit.setFont(fixedWidthFont) self.gridLayout.addWidget(self.proxyNameEdit, 1, 3) self.ipEdit = QLineEdit() self.ipEdit.setFont(fixedWidthFont) self.gridLayout.addWidget(self.ipEdit, 1, 4) self.portEdit = QLineEdit() self.portEdit.setFont(fixedWidthFont) self.gridLayout.addWidget(self.portEdit, 1, 5) self.interfaceCombo = QComboBox() self.gridLayout.addWidget(self.interfaceCombo, 1, 6) self.addButton = QPushButton('Add') self.gridLayout.addWidget(self.addButton, 1, 7) self.addButton.clicked.connect(self.addClicked) self.rowCount = 2 # add server types to the combobox self.serverTypeCombo.addItem('ICE', 'ice') self.serverTypeCombo.addItem('ROS', 'ros') self.serverTypeCombo.currentIndexChanged.connect(self.serverTypeChanged) # add interfaces to the combobox interfaces = Interfaces.getInterfaces() for interfaceName in interfaces: self.interfaceCombo.addItem(interfaceName, interfaceName) self.resize(700, 100) self.setLayout(self.gridLayout)
def __init__(self, ctx: ApplicationContext, app: QApplication, *args, **kwargs): """Set up the single instance of the application.""" super(MainWindow, self).__init__(*args, **kwargs) self.app = app self.ctx = ctx # Set up the QTextEdit editor configuration self.text_window = QPlainTextEdit() # the actual editor pane self.text_window.setTabStopWidth( 800) # Set the tabstop to a nice pretty 800 pixels fixed_font = QFontDatabase.systemFont(QFontDatabase.FixedFont) fixed_font.setPointSize(24) self.text_window.setFont(QFont('Comic Sans MS', 30)) self.text_window.installEventFilter(self) click_sound = self.ctx.get_resource('sounds/click.wav') self.sound = QSound(click_sound) enter_sound = self.ctx.get_resource('sounds/scream.wav') self.enter_sound = QSound(enter_sound) backspace_sound = self.ctx.get_resource('sounds/wrong.wav') self.backspace_sound = QSound(backspace_sound) # Main window layout. Most of the dialogs in Crocpad++ are converted to .py from # Qt Designer .ui files in the ui/ directory, but the main app window is built here. layout = QVBoxLayout() layout.addWidget(self.text_window) container = QWidget() container.setLayout(layout) self.setCentralWidget(container) self.status = QStatusBar() self.setStatusBar(self.status) # Update title and centre window self.filename = "** Untitled **" self.setGeometry(50, 50, 800, 600) rectangle = self.frameGeometry() center_point = QDesktopWidget().availableGeometry().center() rectangle.moveCenter(center_point) self.move(rectangle.topLeft()) window_icon = self.ctx.get_resource('crocpad.ico') self.setWindowIcon(QIcon(window_icon)) self.create_menus() styles = { 'light': crocpad.stylesheets.light, 'dark': crocpad.stylesheets.dark, 'hotdogstand': crocpad.stylesheets.hotdogstand, 'quitedark': crocpad.stylesheets.quitedark } self.app.setStyleSheet(styles[app_config['Editor']['visualmode']]) self.show() # Post-startup tasks if app_config['License']['eulaaccepted'] != 'yes': self.do_eula() self.show_tip() # tip of the day if app_config['Editor']['linewrap'] == 'off': self.text_window.setLineWrapMode(0) self.wrap_action.setChecked(False)
def __init__(self, title, config): QDialog.__init__(self) if config is not None: self.type = config.type else: self.type = JDEROBOTCOMM self.setWindowTitle(title) commSelectionBox = QGroupBox('Select Communication Interface') commSelectionBox.setObjectName('commInterface') # add new config input fields fixedWidthFont = QFontDatabase.systemFont(QFontDatabase.FixedFont) self.commTypeCombo = QComboBox() self.commTypeCombo.setFont(fixedWidthFont) self.commTypeCombo.setMaximumWidth(220) boxLayout = QVBoxLayout() boxLayout.addWidget(self.commTypeCombo) commSelectionBox.setLayout(boxLayout) vLayout = QFormLayout() vLayout.addWidget(commSelectionBox) self.configsLayout = QVBoxLayout() self.configsBox = QGroupBox('') self.configsBox.setLayout(self.configsLayout) vLayout.addWidget(self.configsBox) self.setLayout(vLayout) self.resize(700, 500) #self.setStyleSheet('QGroupBox#commInterface { border: 1px solid black; border-radius: 4px; padding:15px;} QGroupBox::title#commInterface {background-color:transparent; padding-left:25px; padding-top:5px;} ') self.rosConfigsUI = RosConfigDialog('ROS Communication') self.rosConfigsUI.configChanged.connect(self.configChangedHandler) self.configsLayout.addWidget(self.rosConfigsUI) self.rosConfigsUI.setVisible(False) self.jderobotCommConfigsUI = JdeRobotCommConfigDialog('JdeRobot Communication') self.jderobotCommConfigsUI.configChanged.connect(self.configChangedHandler) self.configsLayout.addWidget(self.jderobotCommConfigsUI) self.jderobotCommConfigsUI.setVisible(True) self.rosConfig = None self.jdeRobotCommConfig = None self.commTypeCombo.addItem('JdeRobot Communication', 'jderobotcomm') self.commTypeCombo.addItem('ROS Node', 'ros') self.commTypeCombo.currentIndexChanged.connect(self.commTypeComboChanged) if config is not None: if config.type == ROS: self.rosConfig = config self.commTypeCombo.setCurrentIndex(1) self.loadRosConfigs() elif config.type == JDEROBOTCOMM: self.jdeRobotCommConfig = config self.commTypeCombo.setCurrentIndex(0) self.loadJdeRobotCommConfigs() else: self.loadJdeRobotCommConfigs()
def __init__(self, parent): super().__init__(parent) self.setFont(QFontDatabase.systemFont(QFontDatabase.FixedFont)) self.setAcceptRichText(False) self.setTabChangesFocus(True) self._highlighter = RulesEditorHighlighter(self.document()) self._quiescence_timer = QTimer(self) self._quiescence_timer.setSingleShot(True) self._quiescence_timer.setInterval(self.QUIESCENCE_TIME_MSEC) self._quiescence_timer.timeout.connect(self._on_quiescence_timer_timeout) self.document().contentsChanged.connect(self._on_contents_changed)
def _initializeDefaults(self) -> None: self._fonts = { "system": QCoreApplication.instance().font(), "fixed": QFontDatabase.systemFont(QFontDatabase.FixedFont) } palette = QCoreApplication.instance().palette() self._colors = { "system_window": palette.window(), "system_text": palette.text() } self._sizes = { "line": QSizeF(self._em_width, self._em_height) }
def create_key_info_tab(self): w = QWidget() layout = QGridLayout(w) layout.addWidget(QLabel(_('GPG public key')), 1, 1) data_e = QTextEdit() data_e.setReadOnly(True) data_e.setFont(QFontDatabase.systemFont(QFontDatabase.FixedFont)) layout.addWidget(data_e, 2, 1) data_e.setPlainText(self.gpgw.export_pubkey()) return w
def fixedFont(): """ Returns a default fixed-pitch QFont_ for each supported platform. Returns "Consolas" instead of the default "Courier New" on Windows. TODO: test more .. _QFont: http://doc.qt.io/qt-5/qfont.html """ font = QFontDatabase.systemFont(QFontDatabase.FixedFont) if sys.platform == "win32": # pick Consolas instead of Courier New font.setFamily("Consolas") elif sys.platform == "darwin": # pick Menlo instead of Monaco font.setFamily("Menlo") font.setPointSize(11) return font
def __init__(self, parent, connection, terminal): super(TerminalDialog, self).__init__(None, Qt.WindowCloseButtonHint) self.setupUi(self) self.setWindowFlags(Qt.Window) geometry = Settings().retrieve_geometry("terminal") if geometry: self.restoreGeometry(geometry) self.connection = connection self.terminal = terminal self._auto_scroll = True # TODO: Settings? self.terminal_listener = Listener(self.emit_update_content) self._update_content_signal.connect(self.update_content) self.terminal.add_event.connect(self.terminal_listener) self.outputTextEdit.installEventFilter(self) self.outputTextEdit.verticalScrollBar().sliderPressed.connect(self._stop_scrolling) self.outputTextEdit.verticalScrollBar().sliderReleased.connect(self._scroll_released) self.outputTextEdit.verticalScrollBar().installEventFilter(self) self.inputTextBox.installEventFilter(self) self.clearButton.clicked.connect(self.clear_content) self.sendButton.clicked.connect(self.send_input) self.ctrlaButton.clicked.connect(lambda: self.send_control("a")) self.ctrlbButton.clicked.connect(lambda: self.send_control("b")) self.ctrlcButton.clicked.connect(lambda: self.send_control("c")) self.ctrldButton.clicked.connect(lambda: self.send_control("d")) self.ctrleButton.clicked.connect(lambda: self.send_control("e")) fixed_font = QFontDatabase.systemFont(QFontDatabase.FixedFont) self.outputTextEdit.setFont(fixed_font) self.inputTextBox.setFont(fixed_font) self.autoscrollCheckBox.setChecked(self._auto_scroll) self.autoscrollCheckBox.stateChanged.connect(self._auto_scroll_changed) self.terminal.read() self.outputTextEdit.setText(TerminalDialog.process_backspaces(self.terminal.history)) self._input_history_index = 0
def __init__(self, parent, connection): super(CodeEditDialog, self).__init__(None, Qt.WindowCloseButtonHint) self.setupUi(self) geometry = Settings().retrieve_geometry("editor") if geometry: self.restoreGeometry(geometry) self._connection = connection self.saveLocalButton.clicked.connect(self._save_local) self.saveMcuButton.clicked.connect(self._save_to_mcu) #self.runButton.clicked.connect(self._run_file) self.runButton.hide() fixed_font = QFontDatabase.systemFont(QFontDatabase.FixedFont) self.codeEdit.setFont(fixed_font) if connection and connection.is_connected(): self.connected(connection) else: self.disconnected()
def __init__(self): super(MainWindow, self).__init__() uiPath = resourceFileName('uis:main.ui') loadUi(uiPath, baseinstance=self, package='crispy.gui') # Main window. self.statusbar.showMessage('Ready') # Logger widget. font = QFontDatabase.systemFont(QFontDatabase.FixedFont) if sys.platform == 'darwin': font.setPointSize(font.pointSize() + 1) self.loggerWidget.setFont(font) self.loggerWidget.setLineWrapMode(QPlainTextEdit.NoWrap) # About dialog. self.aboutDialog = AboutDialog(parent=self) self.openAboutDialogAction.triggered.connect(self.openAboutDialog) # Quanty module. self.quantyModuleInit()
def initUI(self): app_icon = QIcon() app_icon.addFile("key.png", QSize(256, 256)) self.setWindowIcon(app_icon) # open openFile = QAction('Open', self) openFile.setShortcut('Ctrl+O') openFile.setStatusTip('Open new File') openFile.triggered.connect(self.fileOpen) # save saveFile = QAction('Save', self) saveFile.setShortcut('Ctrl+S') saveFile.setStatusTip('Save new File') saveFile.triggered.connect(self.fileSave) printAction = QAction("Print", self) printAction.triggered.connect(self.printSetup) # exit exitAction = QAction('Exit', self) exitAction.triggered.connect(self.closeEvent) # menu object menubar = self.menuBar() # file drop down fileMenu = menubar.addMenu('&File') fileMenu.addAction(openFile) fileMenu.addAction(saveFile) fileMenu.addAction(printAction) fileMenu.addAction(exitAction) # widgets grid = QGridLayout() horiz = QVBoxLayout() bigHoriz = QHBoxLayout() horizLayout = QHBoxLayout() window = QWidget() window.setLayout(bigHoriz) leftPane = QFormLayout() bigHoriz.addLayout(leftPane) bigHoriz.addLayout(horiz) self.setCentralWidget(window) btn = QPushButton('Generate', self) btn.clicked.connect(lambda: self.runGen()) clearBtn = QPushButton("Clear", self) clearBtn.clicked.connect(self.clearList) self.mainText = QListWidget(self) self.mainText.itemSelectionChanged.connect(self.listItemClicked) self.mainText.setFont( QFontDatabase.systemFont(QFontDatabase.FixedFont)) self.mastInput = [] i = 0 while i < 6: t = QLineEdit() t.setMaxLength(1) t.setAlignment(Qt.AlignHCenter) t.textChanged.connect(self.textInputed) self.mastInput.append(t) i = i + 1 for e in self.mastInput: horizLayout.addWidget(e) self.mast = QLineEdit() self.tenants = QLineEdit() self.inc = QLineEdit() self.title = QLineEdit() self.title.setMinimumWidth(200) self.desc = QLineEdit() self.address = QLineEdit() self.contact = QLineEdit() self.phone = QLineEdit() self.email = QLineEdit() self.notes = QTextEdit() self.keyway = QLineEdit() label = QLabel("Master Cuts") incLabel = QLabel("Increment") tenantLabel = QLabel("Tenants") # add widgets to layouts leftPane.addRow(QLabel("Title"), self.title) leftPane.addRow(QLabel("Description"), self.desc) leftPane.addRow(QLabel("Keyway"), self.keyway) leftPane.addRow(QLabel("Address"), self.address) leftPane.addRow(QLabel("contact"), self.contact) leftPane.addRow(QLabel("Phone"), self.phone) leftPane.addRow(QLabel("Email"), self.email) leftPane.addRow(QLabel("Notes"), self.notes) grid.addWidget(incLabel, 3, 0) grid.addWidget(tenantLabel, 2, 0) grid.addWidget(label, 1, 0) grid.addWidget(btn, 0, 0) horiz.addWidget(self.mainText) horiz.addLayout(grid) # horiz.addLayout(horizLayout) grid.addWidget(clearBtn, 0, 1) grid.addWidget(self.tenants, 2, 1) grid.addWidget(self.inc, 3, 1) grid.addLayout(horizLayout, 1, 1) # window properties self.setGeometry(300, 300, 500, 425) self.setWindowTitle('PySchlageGen') self.show()
def get_monospace_font() -> QFont: fixed_font = QFontDatabase.systemFont(QFontDatabase.FixedFont) fixed_font.setPointSize(QApplication.instance().font().pointSize()) return fixed_font
def pythonClicked(self): fixedWidthFont = QFontDatabase.systemFont(QFontDatabase.FixedFont) lexer = QsciLexerPython() lexer.setDefaultFont(fixedWidthFont) self.codeEdit.setLexer(lexer) self.language = 'python'
def monospace(): """Return a fixed-space ``QFont``.""" return QFontDatabase.systemFont(QFontDatabase.FixedFont)
def __init__(self, name, transition): super(QDialog, self).__init__() self.transition = transition self.setWindowTitle(name) self.resize(800, 600) self.codeEdit = QsciScintilla() self.codeEdit.setText(self.transition.getCode()) fixedWidthFont = QFontDatabase.systemFont(QFontDatabase.FixedFont) self.codeEdit.setFont(fixedWidthFont) fontmetrics = QFontMetrics(fixedWidthFont) self.codeEdit.setMarginWidth(0, fontmetrics.width("000")) self.codeEdit.setMarginLineNumbers(0, True) self.codeEdit.setMarginsBackgroundColor(QColor("#cccccc")) self.codeEdit.setBraceMatching(QsciScintilla.SloppyBraceMatch) self.codeEdit.setCaretLineVisible(True) self.codeEdit.setCaretLineBackgroundColor(QColor("#ffe4e4")) lexer = QsciLexerPython() lexer.setDefaultFont(fixedWidthFont) self.codeEdit.setLexer(lexer) self.codeEdit.SendScintilla(QsciScintilla.SCI_SETHSCROLLBAR, 0) self.codeEdit.setUtf8(True) self.codeEdit.setTabWidth(4) self.codeEdit.setIndentationsUseTabs(True) self.codeEdit.setIndentationGuides(True) self.codeEdit.setTabIndents(True) self.codeEdit.setAutoIndent(True) self.cancelButton = QPushButton('Cancel') self.cancelButton.clicked.connect(self.cancel) self.acceptButton = QPushButton('Accept') self.acceptButton.clicked.connect(self.accept) self.language = 'python' self.pythonButton = QRadioButton('Python') self.pythonButton.setChecked(True) self.pythonButton.clicked.connect(self.pythonClicked) self.cppButton = QRadioButton('C++') self.cppButton.clicked.connect(self.cppClicked) codeLanguageContainer = QWidget() hLayout0 = QHBoxLayout() hLayout0.addWidget(self.pythonButton) hLayout0.addWidget(self.cppButton) codeLanguageContainer.setLayout(hLayout0) self.temporalButton = QRadioButton('Temporal', self) self.temporalButton.toggled.connect(self.temporalToggled) self.conditionalButton = QRadioButton('Conditional', self) self.conditionalButton.toggled.connect(self.conditionalToggled) radioButtonContainer = QGroupBox() radioButtonContainer.setTitle('Transition Type') vLayout = QVBoxLayout() vLayout.addWidget(self.temporalButton) vLayout.addWidget(self.conditionalButton) radioButtonContainer.setLayout(vLayout) self.transitionTypeCode = QTextEdit() self.transitionTypeCode.setFont(fixedWidthFont) self.transitionGroupBox = QGroupBox() self.transitionGroupBox.setTitle('Temporal (number in ms)') h3Layout = QHBoxLayout() h3Layout.addWidget(self.transitionTypeCode) self.transitionGroupBox.setLayout(h3Layout) typeContainer = QWidget() h2Layout = QHBoxLayout() h2Layout.addWidget(radioButtonContainer) h2Layout.addWidget(self.transitionGroupBox) typeContainer.setLayout(h2Layout) verticalLayout = QVBoxLayout() verticalLayout.addWidget(typeContainer) verticalLayout.addWidget(codeLanguageContainer) verticalLayout.addWidget(self.codeEdit) container = QWidget() hLayout =QHBoxLayout() hLayout.addWidget(self.cancelButton) hLayout.addWidget(self.acceptButton) container.setLayout(hLayout) verticalLayout.addWidget(container) self.setLayout(verticalLayout) if self.transition.getType() == TransitionType.CONDITIONAL: self.conditionalButton.setChecked(True) self.conditionalToggled() elif self.transition.getType() == TransitionType.TEMPORAL: self.temporalButton.setChecked(True) self.temporalToggled()
app.setOrganizationDomain("pgdp.net") app.setApplicationName("PPQT2") from PyQt5.QtCore import QSettings settings = QSettings() import constants as C import fonts from PyQt5.QtGui import (QFont, QFontInfo, QFontDatabase) # check initialize # check defaults on empty settings def same_font(qf1, qf2): return qf1.family() == qf2.family() and qf1.pointSize() == qf2.pointSize() settings.clear() myfdb = QFontDatabase() genqf = myfdb.systemFont(QFontDatabase.GeneralFont) fonts.initialize(settings) assert same_font(genqf,fonts.get_general()) monqf = fonts.get_fixed() dbg = monqf.family() assert monqf.family() == 'Liberation Mono' assert monqf.pointSize() == C.DEFAULT_FONT_SIZE SIGBOOL = None def slot(boola): global SIGBOOL SIGBOOL = boola fonts.notify_me(slot) fonts.set_general(genqf) # should be no signal assert SIGBOOL is None palqf = myfdb.font('Palatino','Normal',18) fonts.set_general(palqf) # should cause signal(false)
def __init__(self, proto_analyzer: ProtocolAnalyzer, undo_stack: QUndoStack, project_manager, proto_bits=None, parent=None): super().__init__(parent) self.undo_stack = undo_stack self.ui = Ui_SignalFrame() self.ui.setupUi(self) fixed_font = QFontDatabase.systemFont(QFontDatabase.FixedFont) fixed_font.setPointSize(QApplication.instance().font().pointSize()) self.ui.txtEdProto.setFont(fixed_font) self.ui.txtEdProto.participants = project_manager.participants self.ui.txtEdProto.messages = proto_analyzer.messages self.ui.gvSignal.participants = project_manager.participants self.setAttribute(Qt.WA_DeleteOnClose) self.project_manager = project_manager self.proto_analyzer = proto_analyzer self.signal = proto_analyzer.signal if self.proto_analyzer is not None else None # type: Signal self.dsp_filter = Filter([0.1] * 10, FilterType.moving_average) self.set_filter_button_caption() self.filter_dialog = FilterDialogController(self.dsp_filter, parent=self) self.proto_selection_timer = QTimer() # For Update Proto Selection from ROI self.proto_selection_timer.setSingleShot(True) self.proto_selection_timer.setInterval(1) # Disabled because never used (see also set_protocol_visibilty()) self.ui.chkBoxSyncSelection.hide() if self.signal is not None: self.filter_menu = QMenu() self.apply_filter_to_selection_only = self.filter_menu.addAction(self.tr("Apply only to selection")) self.apply_filter_to_selection_only.setCheckable(True) self.apply_filter_to_selection_only.setChecked(False) self.configure_filter_action = self.filter_menu.addAction("Configure filter...") self.configure_filter_action.setIcon(QIcon.fromTheme("configure")) self.configure_filter_action.triggered.connect(self.on_configure_filter_action_triggered) self.ui.btnFilter.setMenu(self.filter_menu) if self.signal.qad_demod_file_loaded: self.ui.lSignalTyp.setText("Quad-Demod Signal (*.wav)") elif self.signal.wav_mode: self.ui.lSignalTyp.setText("Realpart Signal (*.wav)") else: self.ui.lSignalTyp.setText("Complex Signal") self.ui.gvLegend.hide() self.ui.lineEditSignalName.setText(self.signal.name) self.ui.lSamplesInView.setText("{0:,}".format(self.signal.num_samples)) self.ui.lSamplesTotal.setText("{0:,}".format(self.signal.num_samples)) self.sync_protocol = self.ui.chkBoxSyncSelection.isChecked() self.ui.chkBoxSyncSelection.hide() self.ui.splitter.setSizes([self.ui.splitter.height(), 0]) self.protocol_selection_is_updateable = True self.scene_manager = SignalSceneManager(self.signal, self) self.ui.gvSignal.scene_manager = self.scene_manager self.ui.gvSignal.setScene(self.scene_manager.scene) self.jump_sync = True self.on_btn_show_hide_start_end_clicked() self.refresh_signal_information(block=True) self.create_connects() self.set_protocol_visibility() self.ui.chkBoxShowProtocol.setChecked(True) self.set_qad_tooltip(self.signal.noise_threshold) self.ui.btnSaveSignal.hide() self.show_protocol(refresh=False) else: self.ui.btnFilter.setDisabled(True) suffix = "" if not proto_analyzer.filename: suffix = "" elif proto_analyzer.filename.endswith(".proto"): suffix = " (*.proto)" elif proto_analyzer.filename.endswith(".txt"): suffix = " (*.txt)" self.ui.lSignalTyp.setText("Protocol"+suffix) scene, nsamples = SignalSceneManager.create_rectangle(proto_bits) self.ui.lSamplesInView.setText("{0:n}".format(int(nsamples))) self.ui.lSamplesTotal.setText("{0:n}".format(int(nsamples))) self.ui.gvSignal.setScene(scene) self.ui.spinBoxSelectionStart.setMaximum(nsamples) self.ui.spinBoxSelectionEnd.setMaximum(nsamples) self.ui.btnReplay.hide() self.create_connects() self.ui.gvSignal.sel_area_active = True self.ui.btnSaveSignal.hide()