def _createActions(self): # https://realpython.com/python-menus-toolbars/ for menu stuff later self.exitAct = QAction(QIcon(resource_path('./assets/icons/exit.png')), '&Exit', self) self.exitAct.setShortcut('Ctrl+Q') self.exitAct.setStatusTip('Exit application') self.exitAct.triggered.connect(qApp.quit) self.copyAct = QAction(QIcon(resource_path('./assets/icons/copy.png')), '&Copy', self) self.copyAct.setShortcut('Ctrl+C') self.copyAct.setStatusTip('Copy entire board') self.copyAct.triggered.connect(self.copy) self.mainActs = QActionGroup(self) self.selectAct = QAction(QIcon(resource_path('./assets/icons/select.ico')), '&Select', self.mainActs) self.selectAct.setShortcut('Shift+S') self.selectAct.setStatusTip('Select board part for copying.') self.selectAct.setCheckable(True) self.selectAct.setEnabled(True) self.selectAct.toggled.connect(self.view.toggleBand) self.undoAct = QAction(QIcon(resource_path('./assets/icons/undo.ico')), '&Undo', self) self.undoAct.setShortcut('Ctrl+Z') self.undoAct.setStatusTip('Undo most recent action') self.undoAct.setEnabled(True) self.undoAct.triggered.connect(self.scene.undo) self.redoAct = QAction(QIcon(resource_path('./assets/icons/redo.ico')), '&Redo', self) self.redoAct.setShortcut('Ctrl+Y') self.redoAct.setStatusTip('Redo most recent action') self.redoAct.setEnabled(True) self.redoAct.triggered.connect(self.scene.redo) self.ccwAct = QAction(QIcon(), '&Counterclockwise') self.ccwAct.setShortcut('Q') self.ccwAct.setStatusTip('Rotate counterclockwise') self.ccwAct.setEnabled(False) self.ccwAct.triggered.connect(self.scene.cursor.ccw) self.cwAct = QAction(QIcon(), '&Clockwise') self.cwAct.setShortcut('W') self.cwAct.setStatusTip('Rotate clockwise') self.cwAct.setEnabled(False) self.cwAct.triggered.connect(self.scene.cursor.cw) pieceNames = ['T','J','Z','O','S','L','I'] self.pieceActs = [] for i in range(7): pieceAct = QAction(QIcon(resource_path(f'./assets/icons/icon{pieceNames[i]}.ico')), pieceNames[i], self.mainActs) pieceAct.setShortcut(pieceNames[i]) pieceAct.setStatusTip(f'Draw the {pieceNames[i]} piece') pieceAct.setCheckable(True) # Ugly solution but it works pieceAct.triggered.connect(lambda x=False,i=i: self.scene.cursor.setType([i, 0])) pieceAct.triggered.connect(lambda : self.ccwAct.setEnabled(True)) pieceAct.triggered.connect(lambda : self.cwAct.setEnabled(True)) self.pieceActs.append(pieceAct) self.cellActs = [] icons = [ QIcon(QPixmap(resource_path('./assets/tile0.png')).scaled(16, 16)), QIcon(resource_path('./assets/icons/whiteCell.ico')), QIcon(resource_path('./assets/icons/darkCell.ico')), QIcon(resource_path('./assets/icons/lightCell.ico')), QIcon(resource_path('./assets/icons/stack.ico')) ] names = ['&Erase', '&White Cell', '&Dark Cell', '&Light Cell', '&Stack Mode'] shortcuts = ['E', '1', '2', '3', 'C'] tips = ['Erase cell', 'Paint the white cell', 'Paint the dark cell', 'Paint the light cell', 'Fill basic stack'] for i in range(5): cellAct = QAction(icons[i], names[i], self.mainActs) cellAct.setShortcut(shortcuts[i]) cellAct.setStatusTip(tips[i]) cellAct.setCheckable(True) if i == 4: cellAct.triggered.connect(lambda : self.scene.setColCursor()) else: cellAct.triggered.connect(lambda x=False,i=i : self.scene.setCellState(i)) cellAct.triggered.connect(lambda : self.ccwAct.setEnabled(False)) cellAct.triggered.connect(lambda : self.cwAct.setEnabled(False)) self.cellActs.append(cellAct) self.cellActs[1].setChecked(True) self.transparentAct = QAction(QIcon(), '&Transparent') self.transparentAct.setShortcut('Ctrl+V') self.transparentAct.setStatusTip('Draw with transparent cells') self.transparentAct.setCheckable(True) self.transparentAct.triggered.connect(lambda x : self.scene.setTransparentDraw(x)) self.rgbAct = QAction(QIcon(), '&Option Colors') self.rgbAct.setShortcut('Ctrl+A') self.rgbAct.setStatusTip('Tint drawn objects with varying colors') self.rgbAct.setCheckable(True) self.connectStatusAct = QAction(QIcon(), '&Enable/Disable', self) self.connectStatusAct.triggered.connect(self.enableTracking) self.toggleMirrorAct = QAction(QIcon(), '&Toggle Mirror', self) self.toggleMirrorAct.setShortcut('Ctrl+M') self.toggleMirrorAct.setEnabled(False) self.toggleMirrorAct.triggered.connect(self.toggleMirror)
def add_action(self, icon_path, text, callback, enabled_flag=True, add_to_menu=True, add_to_toolbar=True, status_tip=None, whats_this=None, parent=None): """Add a toolbar icon to the toolbar. :param icon_path: Path to the icon for this action. Can be a resource path (e.g. ':/plugins/foo/bar.png') or a normal file system path. :type icon_path: str :param text: Text that should be shown in menu items for this action. :type text: str :param callback: Function to be called when the action is triggered. :type callback: function :param enabled_flag: A flag indicating if the action should be enabled by default. Defaults to True. :type enabled_flag: bool :param add_to_menu: Flag indicating whether the action should also be added to the menu. Defaults to True. :type add_to_menu: bool :param add_to_toolbar: Flag indicating whether the action should also be added to the toolbar. Defaults to True. :type add_to_toolbar: bool :param status_tip: Optional text to show in a popup when mouse pointer hovers over the action. :type status_tip: str :param parent: Parent widget for the new action. Defaults None. :type parent: QWidget :param whats_this: Optional text to show in the status bar when the mouse pointer hovers over the action. :returns: The action that was created. Note that the action is also added to self.actions list. :rtype: QAction """ icon = QIcon(icon_path) action = QAction(icon, text, parent) action.triggered.connect(callback) action.setEnabled(enabled_flag) if status_tip is not None: action.setStatusTip(status_tip) if whats_this is not None: action.setWhatsThis(whats_this) if add_to_toolbar: self.toolbar.addAction(action) if add_to_menu: self.iface.addPluginToMenu(self.menu, action) self.actions.append(action) return action
def createMenus(self): new_icon = QIcon(QPixmap(":/images/new.svg")) open_icon = QIcon(QPixmap(":/images/open.svg")) book_icon = QIcon(QPixmap(":/images/book.svg")) bold_icon = QIcon(QPixmap(":/images/bold.svg")) italic_icon = QIcon(QPixmap(":/images/italic.svg")) image_icon = QIcon(QPixmap(":/images/image.svg")) table_icon = QIcon(QPixmap(":/images/table.svg")) á_icon = QIcon(QPixmap(":/images/á.svg")) ã_icon = QIcon(QPixmap(":/images/ã.svg")) é_icon = QIcon(QPixmap(":/images/é.svg")) ê_icon = QIcon(QPixmap(":/images/ê.svg")) ó_icon = QIcon(QPixmap(":/images/ó.svg")) new_act = QAction(new_icon, "&New", self) new_act.setShortcuts(QKeySequence.New) new_act.setStatusTip("Create a new ebook project") new_act.triggered.connect(self.newFile) new_act.setToolTip("Create new ebook project") open_act = QAction(open_icon, "&Open", self) open_act.setShortcuts(QKeySequence.Open) open_act.setStatusTip("Open an existing ebook project") open_act.triggered.connect(self.open) open_act.setToolTip("Open an existing ebook project") book_act = QAction(book_icon, "&Create Book", self) book_act.setShortcuts(QKeySequence.SaveAs) book_act.setStatusTip("Create an ebook") book_act.triggered.connect(self.create) book_act.setToolTip("Create an ebook") pdf_act = QAction("Create &PDF", self) pdf_act.setStatusTip("Create PDF") pdf_act.setToolTip("Create PDF") pdf_act.triggered.connect(self.pdfExport) settings_act = QAction("&Settings", self) settings_act.setStatusTip("Open settings dialog") settings_act.triggered.connect(self.settingsDialog) settings_act.setToolTip("Open settings dialog") exit_act = QAction("E&xit", self) exit_act.setShortcuts(QKeySequence.Quit) exit_act.setStatusTip("Exit the application") exit_act.triggered.connect(self.close) self.undo_act = QAction("Undo", self) self.undo_act.setShortcut(QKeySequence.Undo) self.undo_act.setEnabled(False) self.undo_act.triggered.connect(self.doUndo) self.redo_act = QAction("Redo", self) self.redo_act.setShortcut(QKeySequence.Redo) self.redo_act.setEnabled(False) self.undo_act.triggered.connect(self.doRedo) self.cut_act = QAction("Cu&t", self) self.cut_act.setShortcut(QKeySequence.Cut) self.cut_act.triggered.connect(self.doCut) self.cut_act.setEnabled(False) self.copy_act = QAction("&Copy", self) self.copy_act.setShortcut(QKeySequence.Copy) self.copy_act.triggered.connect(self.doCopy) self.copy_act.setEnabled(False) self.paste_act = QAction("&Paste", self) self.paste_act.setShortcut(QKeySequence.Paste) self.paste_act.triggered.connect(self.doPaste) self.paste_act.setEnabled(False) bold_act = QAction(bold_icon, "Bold", self) bold_act.setShortcut(Qt.CTRL + Qt.Key_B) bold_act.triggered.connect(self.bold) italic_act = QAction(italic_icon, "Italic", self) italic_act.setShortcut(Qt.CTRL + Qt.Key_I) italic_act.triggered.connect(self.italic) image_act = QAction(image_icon, "Image", self) image_act.setShortcut(Qt.CTRL + Qt.Key_G) image_act.triggered.connect(self.insertImage) image_act.setToolTip("Insert an image") table_act = QAction(table_icon, "Table", self) table_act.setShortcut(Qt.CTRL + Qt.Key_T) table_act.triggered.connect(self.insertTable) table_act.setToolTip("Insert a table") á_act = QAction(á_icon, "á", self) á_act.triggered.connect(self.insertLetterA1) á_act.setToolTip("Insert letter á") ã_act = QAction(ã_icon, "ã", self) ã_act.triggered.connect(self.insertLetterA2) ã_act.setToolTip("Insert letter ã") é_act = QAction(é_icon, "é", self) é_act.triggered.connect(self.insertLetterE1) é_act.setToolTip("Insert letter é") ê_act = QAction(ê_icon, "ê", self) ê_act.triggered.connect(self.insertLetterE2) ê_act.setToolTip("Insert letter ê") ó_act = QAction(ó_icon, "ó", self) ó_act.triggered.connect(self.insertLetterO1) ó_act.setToolTip("Insert letter ó") about_act = QAction("&About", self) about_act.triggered.connect(self.about) about_act.setStatusTip("Show the application's About box") spell_act = QAction("&Spellcheck", self) spell_act.setShortcut(Qt.CTRL + Qt.Key_P) spell_act.triggered.connect(self.spellCheck) spell_act.setStatusTip("Spellcheck") file_menu = self.menuBar().addMenu("&File") file_menu.addAction(new_act) file_menu.addAction(open_act) file_menu.addAction(book_act) file_menu.addAction(pdf_act) file_menu.addSeparator() file_menu.addAction(settings_act) file_menu.addSeparator() file_menu.addAction(exit_act) edit_menu = self.menuBar().addMenu("&Edit") edit_menu.addAction(self.undo_act) edit_menu.addAction(self.redo_act) edit_menu.addSeparator() edit_menu.addAction(self.cut_act) edit_menu.addAction(self.copy_act) edit_menu.addAction(self.paste_act) format_menu = self.menuBar().addMenu("&Format") format_menu.addAction(bold_act) format_menu.addAction(italic_act) insert_menu = self.menuBar().addMenu("&Insert") insert_menu.addAction(image_act) insert_menu.addAction(table_act) help_menu = self.menuBar().addMenu("&Help") help_menu.addAction(about_act) help_menu.addAction(spell_act) file_tool_bar = self.addToolBar("File") file_tool_bar.addAction(new_act) file_tool_bar.addAction(open_act) file_tool_bar.addAction(book_act) format_tool_bar = self.addToolBar("Format") format_tool_bar.addAction(bold_act) format_tool_bar.addAction(italic_act) insert_toolbar = self.addToolBar("Insert") insert_toolbar.addAction(image_act) insert_toolbar.addAction(table_act) insert_toolbar.addAction(á_act) insert_toolbar.addAction(ã_act) insert_toolbar.addAction(é_act) insert_toolbar.addAction(ê_act) insert_toolbar.addAction(ó_act)
def __init__(self, parent=None, **kwargs): super().__init__(parent, **kwargs) self.is_main = True self.menu_registry = None settings = QSettings() updateperiod = settings.value("oasys/addon-update-check-period", defaultValue=1, type=int) try: timestamp = os.stat(addons_cache_path()).st_mtime except OSError: timestamp = 0 lastdelta = datetime.now() - datetime.fromtimestamp(timestamp) self._log = logging.getLogger(__name__) self._log.info("Time from last update %s (%s)", lastdelta, timestamp) check = updateperiod >= 0 and \ abs(lastdelta) > timedelta(days=updateperiod) self.__executor = concurrent.futures.ThreadPoolExecutor(max_workers=1) self.__pypi_addons_f = None self.__pypi_addons = None self.__updatable = 0 if check: f = self.__executor.submit(addons.list_available_versions) f.add_done_callback( addons.method_queued(self.__set_pypi_addons_f, (object, ))) self.__pypi_addons_f = f else: try: items = load_pypi_packages() except Exception: pass else: self.__set_pypi_addons(items) self.automatic_save.connect(self.automatic_save_scheme) self.new_action_on_new_window = \ QAction(self.tr("New on a New Window"), self, objectName="action-new-new-window", toolTip=self.tr("Open a new workflow on a new window."), triggered=self.new_scheme_on_new_window, icon=canvasmain.canvas_icons("New.svg") ) self.open_action_on_new_window = \ QAction(self.tr("Open on a New Window"), self, objectName="action-open-new-window", toolTip=self.tr("Open a workflow on a new window."), triggered=self.open_scheme_on_new_window, icon=canvasmain.canvas_icons("Open.svg") ) file_menu = self.menuBar().children()[-1] file_menu.insertAction(file_menu.actions()[2], self.open_action_on_new_window) file_menu.insertAction(file_menu.actions()[1], self.new_action_on_new_window)
def set_menu_registry(self, menu_registry): self.menu_registry = menu_registry for menu_instance in self.menu_registry.menus(): try: menu_instance.setCanvasMainWindow(self) custom_menu = QMenu(menu_instance.name, self) sub_menus = menu_instance.getSubMenuNamesList() is_open_container = False container_menu = None action_index = 0 for index in range(0, len(sub_menus)): if is_open_container: if menu_instance.isSeparator(sub_menus[index]): if container_menu is None: raise Exception( "Container Menu has not been defined") container_menu.addSeparator() elif menu_instance.isOpenContainer(sub_menus[index]): raise Exception( "Container has already been opened: Open Container Operation is inconsistent" ) elif menu_instance.isCloseContainer(sub_menus[index]): is_open_container = False container_menu = None else: if container_menu is None: container_menu = QMenu(sub_menus[index], self) custom_menu.addMenu(container_menu) else: action_index = action_index + 1 custom_action = \ QAction(sub_menus[index], self, objectName=sub_menus[index].lower() + "-action", toolTip=self.tr(sub_menus[index]), ) custom_action.triggered.connect( getattr( menu_instance, 'executeAction_' + str(action_index))) container_menu.addAction(custom_action) else: if menu_instance.isSeparator(sub_menus[index]): custom_menu.addSeparator() elif menu_instance.isOpenContainer(sub_menus[index]): is_open_container = True elif menu_instance.isCloseContainer(sub_menus[index]): raise Exception( "Container has not been opened: Close Container Operation is inconsistent" ) else: action_index = action_index + 1 custom_action = \ QAction(sub_menus[index], self, objectName=sub_menus[index].lower() + "-action", toolTip=self.tr(sub_menus[index]), ) custom_action.triggered.connect( getattr(menu_instance, 'executeAction_' + str(action_index))) custom_menu.addAction(custom_action) self.menuBar().addMenu(custom_menu) except Exception as exception: print("Error in creating Customized Menu: " + str(menu_instance)) print(str(exception.args[0])) continue
def __init__(self, qapp, bbackups, check_interval, environments, graphical_editor, log_path, terminal_command): # Reference to main PyQt.QApplication self.qapp = qapp # Config-defined editor to use when showing borg command output self.graphical_editor = graphical_editor # Store path to log file self.log_path = log_path # Save prepared function for terminal command generation self.terminal_command = terminal_command # Load all tray icon files self.icon = QIcon("icons/icon.png") self.icon_running = [ QIcon("icons/icon_running0.png"), QIcon("icons/icon_running1.png"), QIcon("icons/icon_running2.png"), QIcon("icons/icon_running3.png"), QIcon("icons/icon_running4.png"), QIcon("icons/icon_running5.png"), QIcon("icons/icon_running6.png"), QIcon("icons/icon_running7.png") ] self.icon_running_idx = 0 self.icon_error = QIcon("icons/icon_error.png") self.icon_ok = QIcon("icons/icon_ok.png") self.icon_attention = QIcon("icons/icon_attention.png") # Load icons for menu self.micon_exit = QIcon("icons/micon_exit.png") self.micon_info = QIcon("icons/micon_info.png") self.micon_run = QIcon("icons/micon_run.png") self.micon_log = QIcon("icons/micon_log.png") self.micon_console = QIcon("icons/micon_console.png") # Keep track of borg backups self.bbackups = deque(bbackups) self.bbackups_ = deque() # Keep track of stati of borg backups and other commands # This dict determines which icon is displayed in tray self.status = {} # Get all environments (BEnv objects) self.environments = environments # Setup tray icon self.qapp.setQuitOnLastWindowClosed(False) self.tray = QSystemTrayIcon() self.tray.setIcon(self.icon) # Create right-click menu for tray self.menu = QMenu() self.exit_action = QAction("Exit", self.qapp) self.exit_action.triggered.connect(self.click_exit) self.exit_action.setIcon(self.micon_exit) self.menu.addAction(self.exit_action) self.borg_list_actions = {} self.borg_create_actions = {} self.borg_console_actions = {} for bbackup in self.bbackups: self.menu.addSeparator() self.borg_list_actions[bbackup.name] = QAction( 'List "%s"' % bbackup.name, self.qapp) self.borg_list_actions[bbackup.name].triggered.connect( partial(self.click_borg_list, bbackup)) self.borg_list_actions[bbackup.name].setIcon(self.micon_info) self.menu.addAction(self.borg_list_actions[bbackup.name]) self.borg_create_actions[bbackup.name] = QAction( 'Run "%s" now' % bbackup.name, self.qapp) self.borg_create_actions[bbackup.name].triggered.connect( partial(self.click_borg_create, bbackup)) self.borg_create_actions[bbackup.name].setIcon(self.micon_run) self.menu.addAction(self.borg_create_actions[bbackup.name]) if self.terminal_command is not None: self.borg_console_actions[bbackup.name] = QAction( 'Open console for "%s"' % bbackup.name, self.qapp) self.borg_console_actions[bbackup.name].triggered.connect( partial(self.click_borg_console, bbackup)) self.borg_console_actions[bbackup.name].setIcon( self.micon_console) self.menu.addAction(self.borg_console_actions[bbackup.name]) self.menu.addSeparator() self.log_action = QAction('Show log') self.log_action.triggered.connect(self.click_log) self.log_action.setIcon(self.micon_log) self.menu.addAction(self.log_action) self.tray.setContextMenu(self.menu) # Setup main timer and set interval to config-defined value self.main_timer = QTimer() self.main_timer.setInterval(check_interval * 1000) self.main_timer.timeout.connect(self.timed) # Setup icon update timer with interval of 200ms self.status_timer = QTimer() self.status_timer.setInterval(200) self.status_timer.timeout.connect(self.update_status) # Instantiate a thread pool for long running operations later self.thread_pool = QThreadPool() # Display tray icon self.tray.setVisible(True) # Create status variables self.cur = None self.busy = False self.valid_envs = [] self.user_mode = False # Trigger normally timer-triggered function first self.timed() # Then start timers self.main_timer.start() self.status_timer.start() logging.debug( 'Setup main qt app, main_timer started with interval of %d seconds.' % (check_interval, ))
def __init__(self, path, caption, icons, parent=None): """Helpview initialize with text. """ QMainWindow.__init__(self, parent) self.setAttribute(Qt.WA_QuitOnClose, False) self.setWindowFlags(Qt.Window) self.setStatusBar(QStatusBar()) self.textView = HelpViewer(self) self.setCentralWidget(self.textView) path = os.path.abspath(path) if sys.platform.startswith('win'): path = path.replace('\\', '/') self.textView.setSearchPaths([os.path.dirname(path)]) self.textView.setSource(QUrl('file:///{0}'.format(path))) self.resize(520, 440) self.setWindowTitle(caption) tools = self.addToolBar('Tools') self.menu = QMenu(self.textView) self.textView.highlighted[str].connect(self.showLink) backAct = QAction(_('&Back'), self) backAct.setIcon(icons['helpback']) tools.addAction(backAct) self.menu.addAction(backAct) backAct.triggered.connect(self.textView.backward) backAct.setEnabled(False) self.textView.backwardAvailable.connect(backAct.setEnabled) forwardAct = QAction(_('&Forward'), self) forwardAct.setIcon(icons['helpforward']) tools.addAction(forwardAct) self.menu.addAction(forwardAct) forwardAct.triggered.connect(self.textView.forward) forwardAct.setEnabled(False) self.textView.forwardAvailable.connect(forwardAct.setEnabled) homeAct = QAction(_('&Home'), self) homeAct.setIcon(icons['helphome']) tools.addAction(homeAct) self.menu.addAction(homeAct) homeAct.triggered.connect(self.textView.home) tools.addSeparator() tools.addSeparator() findLabel = QLabel(' {0}: '.format(_('Find')), self) tools.addWidget(findLabel) self.findEdit = QLineEdit(self) tools.addWidget(self.findEdit) self.findEdit.textEdited.connect(self.findTextChanged) self.findEdit.returnPressed.connect(self.findNext) self.findPreviousAct = QAction(_('Find &Previous'), self) self.findPreviousAct.setIcon(icons['helpprevious']) tools.addAction(self.findPreviousAct) self.menu.addAction(self.findPreviousAct) self.findPreviousAct.triggered.connect(self.findPrevious) self.findPreviousAct.setEnabled(False) self.findNextAct = QAction(_('Find &Next'), self) self.findNextAct.setIcon(icons['helpnext']) tools.addAction(self.findNextAct) self.menu.addAction(self.findNextAct) self.findNextAct.triggered.connect(self.findNext) self.findNextAct.setEnabled(False)
def build_device_menu(self): save_apk = QAction("&Save APK", self.app_window) save_apk.triggered.connect(self.handler_save_apk) device_menu = self.menu.addMenu('&Device') self.add_menu_action(device_menu, save_apk, False)
def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(800, 600) # MainWindow.setStyleSheet("#MainWindow{border-image:url(background.jpg)}") self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.msg = QtWidgets.QLabel(self.centralwidget) self.msg.setGeometry(QtCore.QRect(150, 30, 400, 50)) self.msg.hide() self.lineEdit = QtWidgets.QLineEdit(self.centralwidget) self.lineEdit.setGeometry(QtCore.QRect(150, 100, 400, 50)) self.lineEdit.setObjectName("lineEdit") self.lineEdit.setPlaceholderText("Input Brand of Car") self.lineEdit.setStyleSheet( "border:2px solid rgba(52,128,175,255);border-radius:10px;padding:2px 4px" ) self.searchAction = QAction(self.lineEdit) self.searchAction.setIcon(QtGui.QIcon("images/sear.PNG")) self.searchAction.triggered.connect(self.search) self.lineEdit.addAction(self.searchAction, QtWidgets.QLineEdit.TrailingPosition) '''self.pushButton = QtWidgets.QPushButton(self.centralwidget) self.pushButton.setGeometry(QtCore.QRect(580, 100, 50, 50)) self.pushButton.setText("") self.pushButton.setObjectName("pushButton") self.pushButton.setStyleSheet("border-image:url(./images/sear.PNG);") self.pushButton.clicked.connect(self.pushButtonClicked)''' self.logolist = QtWidgets.QTableWidget(self.centralwidget) self.logolist.setGeometry(QtCore.QRect(150, 175, 400, 200)) self.logolist.verticalHeader().setVisible(False) # 隐藏垂直表头 self.logolist.horizontalHeader().setVisible(False) # 隐藏水平表头 self.logolist.setHorizontalScrollBarPolicy( QtCore.Qt.ScrollBarAlwaysOff) # 隐藏垂直滚动条 self.logolist.setVerticalScrollBarPolicy( QtCore.Qt.ScrollBarAlwaysOff) # 隐藏水平滚动条 self.logolist.setColumnCount(4) self.logolist.setRowCount(2) self.gridLayoutWidget = QtWidgets.QWidget(self.centralwidget) self.gridLayoutWidget.setGeometry(QtCore.QRect(150, 175, 400, 200)) self.gridLayoutWidget.setObjectName("gridLayoutWidget") self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget) self.gridLayout.setContentsMargins(0, 0, 0, 0) self.gridLayout.setObjectName("gridLayout") self.gridLayoutWidget.hide() for i in range(8): icon = QtWidgets.QLabel() icon.setMargin(4) img = QtGui.QPixmap("./images/" + str(i) + ".PNG").scaled( QtCore.QSize(80, 80)) icon.setPixmap(img) self.logolist.setCellWidget(int(i / 4), i % 4, icon) self.logolist.setColumnWidth(i % 4, 100) # 设置列的宽度 self.logolist.setRowHeight(int(i / 2), 100) # 设置行的高 MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 22)) self.menubar.setObjectName("menubar") MainWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow)
def __init__(self, parent=None): QMainWindow.__init__(self, parent) self._settings = QSettings() self._logger = logging.getLogger(self.__class__.__name__) self.setWindowTitle("Processing") self.setWindowIcon(QIcon(get_resource("processing.png"))) self.mainFrame = QWidget(self) self.resize(1000, 600) # toolbar self.toolBar = QToolBar("file control") self.toolBar.setIconSize(QSize(24, 24)) self.addToolBar(self.toolBar) self.actLoad = QAction(self) self.actLoad.setText("load result file") self.actLoad.setIcon(QIcon(get_resource("load.png"))) self.actLoad.setDisabled(False) self.actLoad.triggered.connect(self.load_result_files) self.actPostLoad = QAction(self) self.actPostLoad.setText("load post-result file") self.actPostLoad.setIcon(QIcon(get_resource("load.png"))) self.actPostLoad.setDisabled(False) self.actPostLoad.triggered.connect(self.load_post_result_files) self.actSwitch = QAction(self) self.actSwitch.setText("switch display mode") self.actSwitch.setIcon(QIcon(get_resource("left_mode.png"))) self.actSwitch.setDisabled(False) self.actSwitch.triggered.connect(self.switch_sides) self.displayLeft = True self.spacer1 = QWidget() self.spacer2 = QWidget() self.spacer1.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) self.spacer2.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) self.actReloadMethods = QAction(self) self.actReloadMethods.setText("reload methods") self.actReloadMethods.setIcon(QIcon(get_resource("reload.png"))) self.actReloadMethods.setDisabled(False) self.actReloadMethods.triggered.connect(self.update_post_method_list) self.actReloadMetaMethods = QAction(self) self.actReloadMetaMethods.setText("reload meta methods") self.actReloadMetaMethods.setIcon(QIcon(get_resource("reload.png"))) self.actReloadMetaMethods.setDisabled(False) self.actReloadMetaMethods.triggered.connect( self.update_meta_method_list) self.toolBar.addAction(self.actLoad) self.toolBar.addAction(self.actReloadMethods) self.toolBar.addWidget(self.spacer1) self.toolBar.addAction(self.actSwitch) self.toolBar.addWidget(self.spacer2) self.toolBar.addAction(self.actReloadMetaMethods) self.toolBar.addAction(self.actPostLoad) # main window self.grid = QGridLayout(self.mainFrame) self.grid.setColumnMinimumWidth(0, 70) self.grid.setColumnStretch(0, 0) self.grid.setColumnStretch(1, 1) self.methodList = QListWidget(self) self.methodList.itemDoubleClicked.connect(self.post_processor_clicked) self.update_post_method_list() self.metaMethodList = QListWidget(self) self.metaMethodList.itemDoubleClicked.connect( self.meta_processor_clicked) self.update_meta_method_list() self.sim_result_list = QListWidget(self) self.sim_results_changed.connect(self.update_result_list) self.results = [] self.delShort = QShortcut(QKeySequence(Qt.Key_Delete), self.sim_result_list) self.delShort.activated.connect(self.remove_result_item) # figures self._figure_dict = {} self.figures_changed.connect(self.update_figure_lists) self.post_figure_list = QListWidget(self) self.post_figure_list.currentItemChanged.connect( self.current_figure_changed) self.meta_figure_list = QListWidget(self) self.meta_figure_list.currentItemChanged.connect( self.current_figure_changed) self.plotView = QWidget() self.lastFigure = None self.post_result_list = QListWidget(self) self.post_results_changed.connect(self.update_post_result_list) self.post_results = [] self.delShortPost = QShortcut(QKeySequence(Qt.Key_Backspace), self.post_result_list) self.delShortPost.activated.connect(self.remove_post_result_item) # log dock self.logBox = QPlainTextEdit(self) self.logBox.setReadOnly(True) # init logger for logging box self.textLogger = PlainTextLogger(logging.INFO) self.textLogger.set_target_cb(self.logBox.appendPlainText) logging.getLogger().addHandler(self.textLogger) self.grid.addWidget(QLabel("Result Files:"), 0, 0) self.grid.addWidget(self.sim_result_list, 1, 0) self.grid.addWidget(QLabel("Postprocessors:"), 2, 0) self.grid.addWidget(self.methodList, 3, 0) self.grid.addWidget(QLabel("Figures:"), 4, 0) self.grid.addWidget(self.post_figure_list, 5, 0) self.grid.addWidget(QLabel("Selected Figure:"), 0, 1) self.grid.addWidget(QLabel("Postprocessor Files:"), 0, 2) self.grid.addWidget(self.post_result_list, 1, 2) self.grid.addWidget(QLabel("Metaprocessors:"), 2, 2) self.grid.addWidget(self.metaMethodList, 3, 2) self.grid.addWidget(QLabel("Figures:"), 4, 2) self.grid.addWidget(self.meta_figure_list, 5, 2) self.grid.addWidget(self.logBox, 6, 0, 1, 3) self.mainFrame.setLayout(self.grid) self.setCentralWidget(self.mainFrame) # status bar self.statusBar = QStatusBar(self) self.setStatusBar(self.statusBar)
def __init__(self, parent=None): super(MyWindow, self).__init__() self.setObjectName("MediathekQuery") self.root = QFileInfo(__file__).absolutePath() self.setAttribute(Qt.WA_DeleteOnClose) self.settings = QSettings('Axel Schneider', self.objectName()) self.viewer = QTableWidget() self.horizontalHeader = self.viewer.horizontalHeader() icon = self.root + "/icon.png" self.titleList = [] self.topicList = [] self.urlList = [] self.urlKleinList = [] self.beschreibungList = [] self.idList = [] self.chList = [] self.lengthList = [] self.results = "" self.myurl = "" self.fname = "" self.viewer.setSelectionBehavior(QAbstractItemView.SelectRows) self.viewer.SelectionMode(QAbstractItemView.SingleSelection) self.viewer.setSortingEnabled(False) self.viewer.verticalHeader().setStretchLastSection(False) self.viewer.horizontalHeader().setStretchLastSection(True) self.viewer.setColumnCount(7) self.viewer.setColumnWidth(0, 48) self.viewer.setColumnWidth(1, 130) self.viewer.setColumnWidth(2, 160) self.viewer.setColumnWidth(3, 60) self.viewer.hideColumn(4) self.viewer.hideColumn(5) self.viewer.setHorizontalHeaderLabels(["Sender", "Thema", "Titel", "Länge", "HD", "SD", "Beschreibung"]) self.viewer.verticalHeader().setVisible(True) self.viewer.horizontalHeader().setVisible(True) self.setStyleSheet(stylesheet(self)) self.viewer.selectionModel().selectionChanged.connect(self.getCellText) self.layout = QGridLayout() self.layout.addWidget(self.viewer,0, 0, 1, 7) self.findfield = QLineEdit() self.fAction = QAction(QIcon.fromTheme("edit-clear"), "", triggered = self.findfieldAction) self.findfield.addAction(self.fAction, 1) self.findfield.returnPressed.connect(self.myQuery) self.findfield.setFixedWidth(200) self.findfield.setPlaceholderText("suchen ...") self.findfield.setToolTip("ENTER to find") self.layout.addWidget(self.findfield,1, 0) self.chCombo = QComboBox() self.chCombo.setFixedWidth(80) self.chCombo.addItems(['ARD', 'ZDF', 'MDR', 'PHOENIX', 'RBB', 'BR', 'HR', 'SR', \ 'SWR', 'NDR', 'DW', 'WDR', 'ARTE', '3SAT', 'KIKA', 'ORF', 'SRF']) self.chCombo.addItem("alle") self.chCombo.setToolTip("Sender wählen") self.chCombo.currentIndexChanged.connect(self.myQuery) self.layout.addWidget(self.chCombo,1, 1) self.btnPlay = QPushButton("Play") self.btnPlay.setFixedWidth(80) self.btnPlay.setIcon(QIcon.fromTheme("media-playback-start")) self.layout.addWidget(self.btnPlay,1, 2) self.btnPlay.clicked.connect(self.playVideo) self.btnDownload = QPushButton("Download") self.btnDownload.setFixedWidth(100) self.btnDownload.setIcon(QIcon.fromTheme("download")) self.layout.addWidget(self.btnDownload,1, 3) self.btnDownload.clicked.connect(self.downloadVideo) self.chBox = QPushButton("SD") self.chBox.setToolTip("umschalten HD / SD") self.chBox.setStyleSheet("background: #729fcf;") self.chBox.setFixedWidth(44) self.chBox.clicked.connect(self.toggleQuality) self.layout.addWidget(self.chBox,1, 4) self.lbl = QLabel("Info") self.layout.addWidget(self.lbl,1, 5) self.chkbox = QCheckBox("nach Filmlänge sortieren") self.layout.addWidget(self.chkbox,1, 6) self.chkbox.setCheckState(0) self.chkbox.setToolTip("Standard-Sortierung ist nach Erscheinungsdatum") self.chkbox.stateChanged.connect(self.myQuery) self.myWidget = QWidget() self.myWidget.setLayout(self.layout) self.msg("Ready") self.setCentralWidget(self.myWidget) self.setWindowIcon(QIcon(icon)) self.setGeometry(20,20,600,450) self.setWindowTitle("Mediathek Suche") self.readSettings() self.msg("Ready") self.findfield.setFocus() self.player = MediathekPlayer.VideoPlayer('') self.player.hide() wildcards = "Wildcards: + Titel # Thema * Beschreibung\n '<xx Suchbegriff' kleiner als xx Minuten '>xx Suchbegriff' grösser als xx Minuten " help_label = QLabel(wildcards) help_label.setToolTip("ohne Wildcard werden alle Felder durchsucht") help_label.setStyleSheet("font-size: 8pt; color: #1a2334;") self.statusBar().addPermanentWidget(help_label) self.statusBar().showMessage("Ready")
def init_ui(self): # 两个列表存放搜索结果 # 默认使用了我的桌面分辨率大小的标准尺寸 width = 1440 height = 900 x = width / 4 y = height / 4 w = width / 2 h = height / 2 # 创建全屏主窗口 self.setGeometry(x, y, w, h) self.setWindowTitle(self.version) self.setWindowIcon(QIcon("../images/icon.jpg")) #设置主窗口背景 palette = QPalette() palette.setBrush(self.backgroundRole(), QBrush(QPixmap('../images/background.png'))) self.setPalette(palette) # 进入后的提示信息 self.status.showMessage("欢迎") # 创建工具栏 self.addToolBar(self.toolbar) self.facin1.move(w / 6, h / 4) self.facin1.resize(w / 12, h / 12) self.facin1.setMaxLength(2) self.facin1.setFont(QFont('Roman times', 20, QFont.DemiBold)) self.facin1.setAlignment(Qt.AlignCenter) self.tip1.move(w / 6, h / 6) self.tip1.resize(w / 12, h / 12) self.tip1.setText('Number1:') self.tip1.setFont(QFont('Roman times', 12, QFont.DemiBold)) self.tip1.setAlignment(Qt.AlignCenter) self.opin.move(w/3, h / 4) self.opin.resize(w / 24, h / 12) self.opin.setMaxLength(1) self.opin.setFont(QFont('Roman times', 20, QFont.DemiBold)) self.opin.setAlignment(Qt.AlignCenter) self.tipop.move(5*w/16, h / 6) self.tipop.resize(w / 12, h / 12) self.tipop.setText('Operator:') self.tipop.setFont(QFont('Roman times', 12, QFont.DemiBold)) self.tipop.setAlignment(Qt.AlignCenter) self.facin2.move(11*w/24, h / 4) self.facin2.resize(w / 12, h / 12) self.facin2.setMaxLength(2) self.facin2.setFont(QFont('Roman times', 20, QFont.DemiBold)) self.facin2.setAlignment(Qt.AlignCenter) self.tip2.move(11*w/24, h / 6) self.tip2.resize(w / 12, h / 12) self.tip2.setText('Number2:') self.tip2.setFont(QFont('Roman times', 12, QFont.DemiBold)) self.tip2.setAlignment(Qt.AlignCenter) self.equaop.move(5*w/8, h / 4) self.equaop.resize(w / 24, h / 12) self.equaop.setText('=') self.equaop.setFont(QFont('Roman time2', 20, QFont.DemiBold)) self.equaop.setAlignment(Qt.AlignCenter) self.ansin.move(3*w/4, h / 4) self.ansin.resize(w / 12, h / 12) self.ansin.setMaxLength(2) self.ansin.setFont(QFont('Roman times', 20, QFont.DemiBold)) self.ansin.setAlignment(Qt.AlignCenter) self.tipans.move(3*w/4, h / 6) self.tipans.resize(w / 12, h / 12) self.tipans.setText('Answer:') self.tipans.setFont(QFont('Roman times', 12, QFont.DemiBold)) self.tipans.setAlignment(Qt.AlignCenter) # 移动一根火柴按钮 self.onebtn.move(w / 3, 3 * h / 8) self.onebtn.resize(w / 3, h / 16) self.onebtn.setText('搜索只移动一根火柴的结果') self.onebtn.setStatusTip('开始搜索只移动一根火柴的所有结果') self.onebtn.clicked.connect(lambda: self.startSearch(1)) # 移动两根火柴按钮 self.twobtn.move(w / 3, 7 * h / 16) self.twobtn.resize(w / 3, h / 16) self.twobtn.setText('搜索只移动两根火柴的结果') self.twobtn.setStatusTip('开始搜索只移动两根火柴的所有结果') self.twobtn.clicked.connect(lambda: self.startSearch(2)) # LCD显示摆放 self.lcd1.move(w/6, 7*h/12) self.lcd1.resize(w/12, h/8) self.lcd2.move(11*w/24, 7*h/12) self.lcd2.resize(w/12, h/8) self.lcd3.move(3*w/4, 7*h/12) self.lcd3.resize(w/12, h/8) self.lcdeq.move(5*w/8, 7*h/12) self.lcdeq.resize(w/24, h/8) self.lcdeq.setText('=') self.lcdeq.setStyleSheet("font:30pt;border-width: 2px;border-style: solid;border-color: rgb(0, 0, 0);" "background:silver;color: green;") self.lcdeq.setAlignment(Qt.AlignCenter) self.lcdop.move(w/3, 7*h/12) self.lcdop.resize(w/24, h/8) self.lcdop.setStyleSheet("font:30pt;border-width: 2px;border-style: solid;border-color: rgb(0, 0, 0);" "background:silver;color: green;") self.lcdop.setAlignment(Qt.AlignCenter) # 状态信息显示 self.tips.move(w/6, 3*h/4) self.tips.resize(2*w/3, h/10) self.tips.setStyleSheet("background:white;font:12pt") # 上翻下翻 self.last.move(w/4, 17*h/20) self.last.resize(w/8, h/18) self.last.setText('上一个') self.last.setStatusTip('查看上一个可行解') self.last.clicked.connect(lambda: self.changeShow(1)) self.next.move(5*w/8, 17*h/20) self.next.resize(w/8, h/18) self.next.setText('下一个') self.next.setStatusTip('查看下一个可行解') self.next.clicked.connect(lambda: self.changeShow(2)) # 退出动作 exitAct = QAction(QIcon('../images/exit.png'), '&Exit', self) # mac系统下的快捷键 exitAct.setShortcut('command+Q') exitAct.setStatusTip('退出') exitAct.setToolTip('快捷键:command+Q') exitAct.triggered.connect(lambda: self.sureClose()) # 移动一根火柴动作 start1Act = QAction(QIcon('../images/start1.png'), '&Start1', self) start1Act.setShortcut('command+W') start1Act.setToolTip('快捷键:command+W') start1Act.setStatusTip('开始搜索只移动一根火柴的所有结果') start1Act.triggered.connect(lambda: self.startSearch(1)) # 移动两根火柴动作 start2Act = QAction(QIcon('../images/start2.png'), '&Start2', self) start2Act.setShortcut('command+E') start2Act.setToolTip('快捷键:command+E') start2Act.setStatusTip('开始搜索只移动两根火柴的所有结果') start2Act.triggered.connect(lambda: self.startSearch(2)) # 从库中选择等式动作 openLib = QAction(QIcon('../images/lib.png'), '&Library', self) openLib.setShortcut('command+R') openLib.setToolTip('快捷键:command+R') openLib.setStatusTip('打开已有等式库') openLib.triggered.connect(lambda: self.openLibrary()) # 打开帮助和信息界面 openHelp = QAction(QIcon('../images/help.png'), '&Help', self) openHelp.setShortcut('command+A') openHelp.setToolTip('快捷键:command+A') openHelp.setStatusTip('打开帮助界面') openHelp.triggered.connect(lambda: self.openHelp()) # 保存可解等式动作 saveEquation = QAction(QIcon('../images/save.png'), '&Save', self) saveEquation.setShortcut('command+S') saveEquation.setToolTip('快捷键:command+S') saveEquation.setShortcut('保存可解的等式') saveEquation.setStatusTip('保存当前的可解等式') saveEquation.triggered.connect(lambda: self.saveEquation()) # 清除输入和工作区动作 clearAll = QAction(QIcon('../images/clear.png'), 'Clear', self) clearAll.setShortcut('command+C') clearAll.setToolTip('快捷键:command+C') clearAll.setShortcut('清除输入及变量') clearAll.setStatusTip('清除输入及变量') clearAll.triggered.connect(lambda: self.clearAction()) self.toolbar.addAction(start1Act) self.toolbar.addAction(start2Act) self.toolbar.addAction(clearAll) self.toolbar.addAction(openLib) self.toolbar.addAction(saveEquation) self.toolbar.addAction(openHelp) self.toolbar.addAction(exitAct) # 信号和槽连接 self.done1Signal.connect(self.getDone1) self.done2Signal.connect(self.getDone2)
def __init__(self, database, server, config): super().__init__() # База данных сервера self.database = database self.server_thread = server self.config = config # кнопка выход self.exitAction = QAction('Выход', self) self.exitAction.setShortcut('Ctrl+X') self.exitAction.triggered.connect(qApp.quit) # кнопка настройки сервера self.config_button = QAction('Настройки сервера', self) # кнопка обновления списка клиентов self.refresh_button = QAction('Обновление списка', self) # кнопка истории сообщений self.show_history_button = QAction('История пользователей', self) # Кнопка регистрации пользователя self.register_button = QAction('Регистрация пользователя', self) # Кнопка удаления пользователя self.remove_button = QAction('Удаление пользователя', self) # Статусбар self.statusBar() self.statusBar().showMessage('Сервер запущен') # Тулбар self.toolbar = self.addToolBar('MainBar') self.toolbar.addAction(self.refresh_button) self.toolbar.addAction(self.show_history_button) self.toolbar.addAction(self.register_button) self.toolbar.addAction(self.remove_button) self.toolbar.addAction(self.config_button) self.toolbar.addAction(self.exitAction) # настройка вида основного окна self.setFixedSize(800, 600) self.setWindowTitle('Message server') self.label = QLabel('Список подключённых клиентов:', self) self.label.setFixedSize(240, 15) self.label.move(10, 25) # Окно со списком подключённых клиентов. self.active_clients_table = QTableView(self) self.active_clients_table.move(10, 45) self.active_clients_table.setFixedSize(780, 400) # Таймер, обновляющий список клиентов 1 раз в секунду self.timer = QTimer() self.timer.timeout.connect(self.create_gui_model) self.timer.start(1000) # Связываем кнопки с процедурами self.refresh_button.triggered.connect(self.create_gui_model) self.show_history_button.triggered.connect(self.show_statistics) self.config_button.triggered.connect(self.server_config) self.register_button.triggered.connect(self.reg_user) self.remove_button.triggered.connect(self.rem_user) # Отображаем окно. self.show()
else: tp.showMessage('', '暂停翻译', icon=0,msecs=1000) # def top(): # w.Top= not w.Top # if w.Top: # tp.showMessage('百度翻译', '开启置顶', icon=0) # else: # tp.showMessage('百度翻译', '关闭置顶', icon=0) def auto_hide(): w.auto_hinde=not w.auto_hinde if w.auto_hinde: tp.showMessage('百度翻译', '自动隐藏', icon=0,msecs=100) else: tp.showMessage('百度翻译', '不自动隐藏', icon=0,msecs=100) a1 = QAction('&开始',checkable=True, triggered=start) # a2 = QAction('&切换置顶', triggered=top) a3=QAction('&自动隐藏',checkable=True,triggered=auto_hide) def quitApp(): QCoreApplication.instance().quit() tp.setVisible(False) def show_ms(): if gg.isChecked(): w.gg=True tp.showMessage('', '启用谷歌', icon=0,msecs=1000) else: w.gg=False tp.showMessage('', '启动百度', icon=0,msecs=1000) if w.gg:
def createMenuBar(self): bar = self.menuBar() self.filemenu = bar.addMenu("File") self.separatorAct = self.filemenu.addSeparator() self.filemenu.addAction(QIcon.fromTheme("document-new"), "New", self.newCsv, QKeySequence.New) self.filemenu.addAction(QIcon.fromTheme("document-open"), "Open", self.loadCsv, QKeySequence.Open) self.filemenu.addAction(QIcon.fromTheme("document-save"), "Save", self.saveOnQuit, QKeySequence.Save) self.filemenu.addAction(QIcon.fromTheme("document-save-as"), "Save as ...", self.writeCsv, QKeySequence.SaveAs) self.filemenu.addSeparator() self.filemenu.addAction(QIcon.fromTheme("document-print-preview"), "Print Preview", self.handlePreview, "Shift+Ctrl+P") self.filemenu.addAction(QIcon.fromTheme("document-print"), "Print", self.handlePrint, QKeySequence.Print) self.filemenu.addSeparator() for i in range(self.MaxRecentFiles): self.filemenu.addAction(self.recentFileActs[i]) self.updateRecentFileActions() self.filemenu.addSeparator() self.clearRecentAct = QAction("clear Recent Files List", self, triggered=self.clearRecentFiles) self.clearRecentAct.setIcon(QIcon.fromTheme("edit-clear")) self.filemenu.addAction(self.clearRecentAct) self.filemenu.addSeparator() self.filemenu.addAction(QIcon.fromTheme("application-exit"), "Exit", self.handleQuit, QKeySequence.Quit) self.editmenu = bar.addMenu("Edit") self.editmenu.addAction(self.actionUndo) self.editmenu.addAction(self.actionRedo) self.editmenu.addSeparator() self.editmenu.addAction(QIcon.fromTheme("edit"), "first row to headers", self.setHeaders) self.editmenu.addAction(QIcon.fromTheme("edit"), "headers to first row", self.setHeadersToFirstRow) self.editmenu.addSeparator() self.editmenu.addAction(QIcon.fromTheme("edit-copy"), "copy Cell", self.copyByContext, QKeySequence.Copy) self.editmenu.addAction(QIcon.fromTheme("edit-paste"), "paste Cell", self.pasteByContext, QKeySequence.Paste) self.editmenu.addAction(QIcon.fromTheme("edit-cut"), "cut Cell", self.cutByContext, QKeySequence.Cut) self.editmenu.addAction(QIcon.fromTheme("edit-delete"), "delete Cell", self.deleteCell, QKeySequence.Delete) self.editmenu.addSeparator() self.editmenu.addAction(QIcon.fromTheme("edit-copy"), "copy Row", self.copyRow) self.editmenu.addAction(QIcon.fromTheme("edit-paste"), "paste Row", self.pasteRow) self.editmenu.addSeparator() self.editmenu.addAction(QIcon.fromTheme("edit-copy"), "copy Column", self.copyColumn) self.editmenu.addAction(QIcon.fromTheme("edit-paste"), "paste Column", self.pasteColumn) self.editmenu.addSeparator() self.editmenu.addAction(QIcon.fromTheme("add"), "add Row", self.addRow) self.editmenu.addAction(QIcon.fromTheme("edit-delete"), "remove Row", self.removeRow) self.editmenu.addSeparator() self.editmenu.addAction(QIcon.fromTheme("add"), "add Column", self.addColumn) self.editmenu.addAction(QIcon.fromTheme("edit-delete"), "remove Column", self.removeColumn) self.editmenu.addSeparator() self.editmenu.addAction(QIcon.fromTheme("edit-clear"), "clear List", self.clearList) self.editmenu.addSeparator() self.editmenu.addAction(QIcon.fromTheme("pane-show-symbolic"), "toggle horizontal Headers", self.toggleHorizHeaders) self.editmenu.addAction(QIcon.fromTheme("pane-hide-symbolic"), "toggle vertical Headers", self.toggleVertHeaders) self.editmenu.addAction(self.whiteAction)
def initUI(self): self.resize(960, 640) self.setWindowTitle('UNO Cards') # if len(sys.argv) == 0: # cardNum = int(sys.argv[0]) # else: cardNum = 7 menubar = self.menuBar() # menubar.setNativeMenubar(False) if platform.system() == 'Darwin': onlineAction = QPushButton('Get on line', self) onlineAction.pressed.connect(self.getOnline) onlineAction.setGeometry(20, 5, 100, 30) else: onlineAction = QAction('Get on line', self) onlineAction.setShortcut('Ctrl+E') onlineAction.triggered.connect(self.getOnline) menubar.addAction(onlineAction) # cards = self.cardFun(7) # for cardID, num in zip(self.cardFun(cardNum), range(cardNum)): # self.myCard.append(card.Card(self, cardID, 150+25*num, 510, True)) # for cardID, num in zip(self.cardFun(cardNum), range(cardNum)): # self.p1Card.append(card.Card(self, cardID, 30, 30+10*num)) # for cardID, num in zip(self.cardFun(cardNum), range(cardNum)): # self.p2Card.append(card.Card(self, cardID, 868, 30+10*num)) self.p1Left = QLabel(str(len(self.p1Card)), self) self.p1Left.setGeometry(30, 40, 62, 20) self.playButton = QPushButton(self) self.playButton.pressed.connect(self.playMine) self.playButton.setStyleSheet( "QPushButton{background-image: url(assets/play.png)} QPushButton{border: none}" ) self.playButton.setGeometry(355, 470, 70, 22) self.noButton = QPushButton(self) self.noButton.pressed.connect(self.noMine) self.noButton.setStyleSheet( "QPushButton{background-image: url(assets/no.png)} QPushButton{border: none}" ) self.noButton.setGeometry(475, 470, 70, 22) tmp = QPushButton(self) tmp.setStyleSheet( 'QPushButton{background-image: url(empty.png)} QPushButton{border: none}' ) tmp.setGeometry(422, 116, 58, 52) tmp.setEnabled(False) self.colorPad.append(tmp) tmp = QPushButton(self) tmp.setStyleSheet( 'QPushButton{background-image: url(empty.png)} QPushButton{border: none}' ) tmp.setGeometry(480, 115, 58, 52) tmp.setEnabled(False) self.colorPad.append(tmp) tmp = QPushButton(self) tmp.setStyleSheet( 'QPushButton{background-image: url(empty.png)} QPushButton{border: none}' ) tmp.setGeometry(422, 170, 58, 52) tmp.setEnabled(False) self.colorPad.append(tmp) tmp = QPushButton(self) tmp.setStyleSheet( 'QPushButton{background-image: url(empty.png)} QPushButton{border: none}' ) tmp.setGeometry(479, 170, 58, 52) tmp.setEnabled(False) self.colorPad.append(tmp) self.timer1 = QBasicTimer() self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.show()
def contextMenuEvent(self, event): self.menu = QMenu(self) if self.tableView.selectionModel().hasSelection(): # copy copyAction = QAction(QIcon.fromTheme("edit-copy"), 'Copy Cell', self) copyAction.triggered.connect(lambda: self.copyByContext()) # paste pasteAction = QAction(QIcon.fromTheme("edit-paste"), 'Paste Cell', self) pasteAction.triggered.connect(lambda: self.pasteByContext()) # cut cutAction = QAction(QIcon.fromTheme("edit-cut"), 'Cut Cell', self) cutAction.triggered.connect(lambda: self.cutByContext()) # delete selected Row removeAction = QAction(QIcon.fromTheme("edit-delete"), 'delete Row', self) removeAction.triggered.connect( lambda: self.deleteRowByContext(event)) # add Row after addAction = QAction(QIcon.fromTheme("add"), 'insert new Row after', self) addAction.triggered.connect(lambda: self.addRowByContext(event)) # add Row before addAction2 = QAction(QIcon.fromTheme("add"), 'insert new Row before', self) addAction2.triggered.connect(lambda: self.addRowByContext2(event)) # add Column before addColumnBeforeAction = QAction(QIcon.fromTheme("add"), 'insert new Column before', self) addColumnBeforeAction.triggered.connect( lambda: self.addColumnBeforeByContext(event)) # add Column after addColumnAfterAction = QAction(QIcon.fromTheme("add"), 'insert new Column after', self) addColumnAfterAction.triggered.connect( lambda: self.addColumnAfterByContext(event)) # delete Column deleteColumnAction = QAction(QIcon.fromTheme("edit-delete"), 'delete Column', self) deleteColumnAction.triggered.connect( lambda: self.deleteColumnByContext(event)) # replace all row = self.selectedRow() col = self.selectedColumn() myitem = self.tableView.item(row, col) if myitem is not None: self.mytext = myitem.text() replaceThisAction = QAction( QIcon.fromTheme("edit-find-and-replace"), "replace all occurrences of '" + self.mytext + "'", self) replaceThisAction.triggered.connect(lambda: self.replaceThis()) # find all findThisAction = QAction( QIcon.fromTheme("edit-find"), "find all rows contains '" + self.mytext + "'", self) findThisAction.triggered.connect(lambda: self.findThis()) ### self.menu.addAction(copyAction) self.menu.addAction(pasteAction) self.menu.addAction(cutAction) self.menu.addSeparator() self.menu.addAction(QIcon.fromTheme("edit-delete"), "delete", self.deleteCell, QKeySequence.Delete) self.menu.addSeparator() self.menu.addAction(QIcon.fromTheme("edit-copy"), "copy Row", self.copyRow) self.menu.addAction(QIcon.fromTheme("edit-paste"), "paste Row", self.pasteRow) self.menu.addSeparator() self.menu.addAction(QIcon.fromTheme("edit-copy"), "copy Column", self.copyColumn) self.menu.addAction(QIcon.fromTheme("edit-paste"), "paste Column", self.pasteColumn) self.menu.addSeparator() self.menu.addAction(addAction) self.menu.addAction(addAction2) self.menu.addSeparator() self.menu.addAction(addColumnBeforeAction) self.menu.addAction(addColumnAfterAction) self.menu.addSeparator() self.menu.addAction(removeAction) self.menu.addAction(deleteColumnAction) self.menu.addSeparator() self.menu.addAction(replaceThisAction) self.menu.addAction(findThisAction) self.menu.addSeparator() self.menu.addAction(self.whiteAction) self.menu.popup(QCursor.pos())
def __init__(self, *args): super(MainUI, self).__init__(*args) self.setupUi(self) # Restore window size if present in the config file try: size = Config().get("window_size") self.resize(size[0], size[1]) except KeyError: pass self.cf = Crazyflie(ro_cache=None, rw_cache=cfclient.config_path + "/cache") cflib.crtp.init_drivers( enable_debug_driver=Config().get("enable_debug_driver")) #zmq_params = ZMQParamAccess(self.cf) #zmq_params.start() #zmq_leds = ZMQLEDDriver(self.cf) #zmq_leds.start() self.scanner = ScannerThread() self.scanner.interfaceFoundSignal.connect(self.foundInterfaces) self.scanner.start() # Create and start the Input Reader self._statusbar_label = QLabel("No input-device found, insert one to" " fly.") self.statusBar().addWidget(self._statusbar_label) self.joystickReader = JoystickReader() self._active_device = "" # self.configGroup = QActionGroup(self._menu_mappings, exclusive=True) self._mux_group = QActionGroup(self._menu_inputdevice) self._mux_group.setExclusive(True) # TODO: Need to reload configs # ConfigManager().conf_needs_reload.add_callback(self._reload_configs) self.connect_input = QShortcut("Ctrl+I", self.connectButton, self._connect) self.cf.connection_failed.add_callback( self.connectionFailedSignal.emit) self.connectionFailedSignal.connect(self._connection_failed) self._input_device_error_signal.connect( self._display_input_device_error) self.joystickReader.device_error.add_callback( self._input_device_error_signal.emit) self._input_discovery_signal.connect(self.device_discovery) self.joystickReader.device_discovery.add_callback( self._input_discovery_signal.emit) # Connect UI signals self.logConfigAction.triggered.connect(self._show_connect_dialog) self.menuItemConnect.triggered.connect(self._connect) self.menuItemConfInputDevice.triggered.connect( self._show_input_device_config_dialog) self.menuItemExit.triggered.connect(self.closeAppRequest) self.batteryUpdatedSignal.connect(self._update_battery) self._menuitem_rescandevices.triggered.connect(self._rescan_devices) self._menuItem_openconfigfolder.triggered.connect( self._open_config_folder) self._connectivity_manager = ConnectivityManager() self._connectivity_manager.register_ui_elements( ConnectivityManager.UiElementsContainer( interface_combo=self.interfaceCombo, address_spinner=self.address, connect_button=self.connectButton, scan_button=self.scanButton)) self._connectivity_manager.connect_button_clicked.connect( self._connect) self._connectivity_manager.scan_button_clicked.connect(self._scan) self._auto_reconnect_enabled = Config().get("auto_reconnect") self.autoReconnectCheckBox.toggled.connect( self._auto_reconnect_changed) self.autoReconnectCheckBox.setChecked(Config().get("auto_reconnect")) self._disable_input = False self.joystickReader.input_updated.add_callback( lambda *args: self._disable_input or self.cf.commander. send_setpoint(*args)) self.joystickReader.assisted_input_updated.add_callback( lambda *args: self._disable_input or self.cf.commander. send_velocity_world_setpoint(*args)) self.joystickReader.heighthold_input_updated.add_callback( lambda *args: self._disable_input or self.cf.commander. send_zdistance_setpoint(*args)) # we intercept the callback to our own helper self.joystickReader.hover_input_updated.add_callback( cfclient.ui.pluginhelper.send_hover_setpoint) # Use our own callback to activate the actual hover setpoint cfclient.ui.pluginhelper.hover_input_updated.add_callback( self.cf.commander.send_hover_setpoint) # Connection callbacks and signal wrappers for UI protection self.cf.connected.add_callback(self.connectionDoneSignal.emit) self.connectionDoneSignal.connect(self._connected) self.cf.disconnected.add_callback(self.disconnectedSignal.emit) self.disconnectedSignal.connect(self._disconnected) self.cf.connection_lost.add_callback(self.connectionLostSignal.emit) self.connectionLostSignal.connect(self._connection_lost) self.cf.connection_requested.add_callback( self.connectionInitiatedSignal.emit) self.connectionInitiatedSignal.connect(self._connection_initiated) self._log_error_signal.connect(self._logging_error) self.batteryBar.setTextVisible(False) self.linkQualityBar.setTextVisible(False) # Connect link quality feedback self.cf.link_quality_updated.add_callback(self.linkQualitySignal.emit) self.linkQualitySignal.connect( lambda percentage: self.linkQualityBar.setValue(percentage)) # Parse the log configuration files self.logConfigReader = LogConfigReader(self.cf) self._current_input_config = None self._active_config = None self._active_config = None self.inputConfig = None # Add things to helper so tabs can access it cfclient.ui.pluginhelper.cf = self.cf cfclient.ui.pluginhelper.inputDeviceReader = self.joystickReader cfclient.ui.pluginhelper.logConfigReader = self.logConfigReader cfclient.ui.pluginhelper.pose_logger = PoseLogger(self.cf) cfclient.ui.pluginhelper.connectivity_manager = self._connectivity_manager cfclient.ui.pluginhelper.mainUI = self self.logConfigDialogue = LogConfigDialogue(cfclient.ui.pluginhelper) self._bootloader_dialog = BootloaderDialog(cfclient.ui.pluginhelper) self._cf2config_dialog = Cf2ConfigDialog(cfclient.ui.pluginhelper) self.menuItemBootloader.triggered.connect(self._bootloader_dialog.show) self._about_dialog = AboutDialog(cfclient.ui.pluginhelper) self.menuItemAbout.triggered.connect(self._about_dialog.show) self._menu_cf2_config.triggered.connect(self._cf2config_dialog.show) self._connectivity_manager.set_address(0xE7E7E7E7E7) self._initial_scan = True self._scan(self._connectivity_manager.get_address()) # Load and connect tabs self.tabsMenuItem = QMenu("Tabs", self.menuView, enabled=True) self.menuView.addMenu(self.tabsMenuItem) tabItems = {} self.loadedTabs = [] for tabClass in cfclient.ui.tabs.available: tab = tabClass(self.tabs, cfclient.ui.pluginhelper) # Set reference for plot-tab. if isinstance(tab, cfclient.ui.tabs.PlotTab): cfclient.ui.pluginhelper.plotTab = tab item = QtWidgets.QAction(tab.getMenuName(), self, checkable=True) item.toggled.connect(tab.toggleVisibility) self.tabsMenuItem.addAction(item) tabItems[tab.getTabName()] = item self.loadedTabs.append(tab) if not tab.enabled: item.setEnabled(False) # First instantiate all tabs and then open them in the correct order try: for tName in Config().get("open_tabs").split(","): t = tabItems[tName] if (t is not None and t.isEnabled()): # Toggle though menu so it's also marked as open there t.toggle() except Exception as e: logger.warning("Exception while opening tabs [{}]".format(e)) # Loading toolboxes (A bit of magic for a lot of automatic) self.toolboxesMenuItem = QMenu("Toolboxes", self.menuView, enabled=True) self.menuView.addMenu(self.toolboxesMenuItem) self.toolboxes = [] for t_class in cfclient.ui.toolboxes.toolboxes: toolbox = t_class(cfclient.ui.pluginhelper) dockToolbox = MyDockWidget(toolbox.getName()) dockToolbox.setWidget(toolbox) self.toolboxes += [ dockToolbox, ] # Add menu item for the toolbox item = QtWidgets.QAction(toolbox.getName(), self) item.setCheckable(True) item.triggered.connect(self.toggleToolbox) self.toolboxesMenuItem.addAction(item) dockToolbox.closed.connect(lambda: self.toggleToolbox(False)) # Setup some introspection item.dockToolbox = dockToolbox item.menuItem = item dockToolbox.dockToolbox = dockToolbox dockToolbox.menuItem = item # References to all the device sub-menus in the "Input device" menu self._all_role_menus = () # Used to filter what new devices to add default mapping to self._available_devices = () # Keep track of mux nodes so we can enable according to how many # devices we have self._all_mux_nodes = () # Check which Input muxes are available self._mux_group = QActionGroup(self._menu_inputdevice) self._mux_group.setExclusive(True) for m in self.joystickReader.available_mux(): node = QAction(m.name, self._menu_inputdevice, checkable=True, enabled=False) node.toggled.connect(self._mux_selected) self._mux_group.addAction(node) self._menu_inputdevice.addAction(node) self._all_mux_nodes += (node, ) mux_subnodes = () for name in m.supported_roles(): sub_node = QMenu(" {}".format(name), self._menu_inputdevice, enabled=False) self._menu_inputdevice.addMenu(sub_node) mux_subnodes += (sub_node, ) self._all_role_menus += ({ "muxmenu": node, "rolemenu": sub_node }, ) node.setData((m, mux_subnodes)) self._mapping_support = True # Add checkbuttons for theme-selection. self._theme_group = QActionGroup(self.menuThemes) self._theme_group.setExclusive(True) self._theme_checkboxes = [] for theme in UiUtils.THEMES: node = QAction(theme, self.menuThemes, checkable=True) node.setObjectName(theme) node.toggled.connect(self._theme_selected) self._theme_checkboxes.append(node) self._theme_group.addAction(node) self.menuThemes.addAction(node)
def __init__(self, parent=None): super(VideoWindow, self).__init__(parent) self.setWindowTitle("PyQt Video Player Widget Example") self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.VideoSurface) self.videoWidget = QVideoWidget() self.playButton = QPushButton() self.playButton.setEnabled(False) self.playButton.setIcon(self.style().standardIcon(QStyle.SP_MediaPlay)) self.playButton.clicked.connect(self.play) self.positionSlider = QSlider(Qt.Horizontal) self.positionSlider.setRange(0, 0) self.positionSlider.sliderMoved.connect(self.setPosition) self.errorLabel = QLabel() self.errorLabel.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Maximum) # Create new action openAction = QAction(QIcon('open.png'), '&Open', self) openAction.setShortcut('Ctrl+O') openAction.setStatusTip('Open movie') openAction.triggered.connect(self.openFile) # Create exit action exitAction = QAction(QIcon('exit.png'), '&Exit', self) exitAction.setShortcut('Ctrl+Q') exitAction.setStatusTip('Exit application') exitAction.triggered.connect(self.exitCall) # Create menu bar and add action menuBar = self.menuBar() fileMenu = menuBar.addMenu('&File') #fileMenu.addAction(newAction) fileMenu.addAction(openAction) fileMenu.addAction(exitAction) # Create a widget for window contents wid = QWidget(self) self.setCentralWidget(wid) # Create layouts to place inside widget controlLayout = QHBoxLayout() controlLayout.setContentsMargins(0, 0, 0, 0) controlLayout.addWidget(self.playButton) controlLayout.addWidget(self.positionSlider) layout = QVBoxLayout() layout.addWidget(self.videoWidget) layout.addLayout(controlLayout) layout.addWidget(self.errorLabel) # Set widget to contain window contents wid.setLayout(layout) self.mediaPlayer.setVideoOutput(self.videoWidget) self.mediaPlayer.stateChanged.connect(self.mediaStateChanged) self.mediaPlayer.positionChanged.connect(self.positionChanged) self.mediaPlayer.durationChanged.connect(self.durationChanged) self.mediaPlayer.error.connect(self.handleError)
def device_discovery(self, devs): """Called when new devices have been added""" for menu in self._all_role_menus: role_menu = menu["rolemenu"] mux_menu = menu["muxmenu"] dev_group = QActionGroup(role_menu) dev_group.setExclusive(True) for d in devs: dev_node = QAction(d.name, role_menu, checkable=True, enabled=True) role_menu.addAction(dev_node) dev_group.addAction(dev_node) dev_node.toggled.connect(self._inputdevice_selected) map_node = None if d.supports_mapping: map_node = QMenu(" Input map", role_menu, enabled=False) map_group = QActionGroup(role_menu) map_group.setExclusive(True) # Connect device node to map node for easy # enabling/disabling when selection changes and device # to easily enable it dev_node.setData((map_node, d)) for c in ConfigManager().get_list_of_configs(): node = QAction(c, map_node, checkable=True, enabled=True) node.toggled.connect(self._inputconfig_selected) map_node.addAction(node) # Connect all the map nodes back to the device # action node where we can access the raw device node.setData(dev_node) map_group.addAction(node) # If this device hasn't been found before, then # select the default mapping for it. if d not in self._available_devices: last_map = Config().get("device_config_mapping") if d.name in last_map and last_map[d.name] == c: node.setChecked(True) role_menu.addMenu(map_node) dev_node.setData((map_node, d, mux_menu)) # Update the list of what devices we found # to avoid selecting default mapping for all devices when # a new one is inserted self._available_devices = () for d in devs: self._available_devices += (d, ) # Only enable MUX nodes if we have enough devies to cover # the roles for mux_node in self._all_mux_nodes: (mux, sub_nodes) = mux_node.data() if len(mux.supported_roles()) <= len(self._available_devices): mux_node.setEnabled(True) # TODO: Currently only supports selecting default mux if self._all_mux_nodes[0].isEnabled(): self._all_mux_nodes[0].setChecked(True) # If the previous length of the available devies was 0, then select # the default on. If that's not available then select the first # on in the list. # TODO: This will only work for the "Normal" mux so this will be # selected by default if Config().get("input_device") in [d.name for d in devs]: for dev_menu in self._all_role_menus[0]["rolemenu"].actions(): if dev_menu.text() == Config().get("input_device"): dev_menu.setChecked(True) else: # Select the first device in the first mux (will always be "Normal" # mux) self._all_role_menus[0]["rolemenu"].actions()[0].setChecked(True) logger.info("Select first device") self._update_input_device_footer()
def create_connects(self): self.ui.actionFullscreen_mode.setShortcut(QKeySequence.FullScreen) self.ui.actionOpen.setShortcut(QKeySequence(QKeySequence.Open)) self.ui.actionOpen_directory.setShortcut(QKeySequence("Ctrl+Shift+O")) self.ui.actionMinimize_all.setShortcut("F10") self.ui.actionMaximize_all.setShortcut("F11") self.ui.actionNew_Project.triggered.connect( self.on_new_project_action_triggered) self.ui.actionProject_settings.triggered.connect( self.on_project_settings_action_triggered) self.ui.actionSave_project.triggered.connect( self.project_manager.saveProject) self.ui.actionAbout_AutomaticHacker.triggered.connect( self.on_show_about_clicked) self.ui.actionRecord.triggered.connect( self.on_show_record_dialog_action_triggered) self.ui.actionFullscreen_mode.triggered.connect( self.on_fullscreen_action_triggered) self.ui.actionSaveAllSignals.triggered.connect( self.signal_tab_controller.save_all) self.ui.actionClose_all.triggered.connect( self.on_close_all_action_triggered) self.ui.actionOpen.triggered.connect( self.on_open_file_action_triggered) self.ui.actionOpen_directory.triggered.connect( self.on_open_directory_action_triggered) self.ui.actionDecoding.triggered.connect( self.on_show_decoding_dialog_triggered) self.ui.actionSpectrum_Analyzer.triggered.connect( self.on_show_spectrum_dialog_action_triggered) self.ui.actionOptions.triggered.connect( self.show_options_dialog_action_triggered) self.ui.actionSniff_protocol.triggered.connect( self.show_proto_sniff_dialog) self.ui.actionAbout_Qt.triggered.connect( QApplication.instance().aboutQt) self.ui.actionMinimize_all.triggered.connect( self.signal_tab_controller.minimize_all) self.ui.actionMaximize_all.triggered.connect( self.signal_tab_controller.maximize_all) self.signal_tab_controller.frame_closed.connect( self.close_signal_frame) self.signal_tab_controller.signal_created.connect(self.add_signal) self.signal_tab_controller.ui.scrollArea.files_dropped.connect( self.on_files_dropped) self.signal_tab_controller.files_dropped.connect(self.on_files_dropped) self.signal_tab_controller.frame_was_dropped.connect( self.set_frame_numbers) self.compare_frame_controller.show_interpretation_clicked.connect( self.show_protocol_selection_in_interpretation) self.compare_frame_controller.files_dropped.connect( self.on_files_dropped) self.compare_frame_controller.show_decoding_clicked.connect( self.on_show_decoding_dialog_triggered) self.compare_frame_controller.ui.treeViewProtocols.files_dropped_on_group.connect( self.on_files_dropped_on_group) self.compare_frame_controller.participant_changed.connect( self.signal_tab_controller.on_participant_changed) self.compare_frame_controller.ui.treeViewProtocols.close_wanted.connect( self.on_cfc_close_wanted) self.compare_frame_controller.show_config_field_types_triggered.connect( self.on_show_field_types_config_action_triggered) self.ui.lnEdtTreeFilter.textChanged.connect( self.on_file_tree_filter_text_changed) self.ui.tabWidget.currentChanged.connect(self.on_selected_tab_changed) self.project_save_timer.timeout.connect( self.project_manager.saveProject) self.ui.actionConvert_Folder_to_Project.triggered.connect( self.project_manager.convert_folder_to_project) self.project_manager.project_loaded_status_changed.connect( self.ui.actionProject_settings.setVisible) self.project_manager.project_loaded_status_changed.connect( self.ui.actionSave_project.setVisible) self.project_manager.project_loaded_status_changed.connect( self.ui.actionConvert_Folder_to_Project.setDisabled) self.project_manager.project_updated.connect(self.on_project_updated) self.ui.textEditProjectDescription.textChanged.connect( self.on_text_edit_project_description_text_changed) self.ui.tabWidget_Project.tabBarDoubleClicked.connect( self.on_project_tab_bar_double_clicked) self.ui.listViewParticipants.doubleClicked.connect( self.on_project_settings_action_triggered) self.ui.menuFile.addSeparator() for i in range(constants.MAX_RECENT_FILE_NR): recentFileAction = QAction(self) recentFileAction.setVisible(False) recentFileAction.triggered.connect( self.on_open_recent_action_triggered) self.recentFileActionList.append(recentFileAction) self.ui.menuFile.addAction(self.recentFileActionList[i])
def initUI(self): '''GUI Constructor''' img = joinBase('images', 'riskMask.png') x = randint(0, 10) print(x) if x < 8: print('setting to money-bag') img = joinBase('images', 'money-bag.png') self.setWindowIcon(QIcon(img)) img = joinBase('images', 'stop-train.png') changeStops = QAction(QIcon(img), 'Change Stops', self) changeStops.setShortcut('Ctrl+t') changeStops.setStatusTip('Change the stop amounts to view.') changeStops.triggered.connect(self.showDialog) img = joinBase('images', 'choose-font.png') setFont = QAction(QIcon(img), "Set the font", self) setFont.setShortcut('Ctrl+f') setFont.setStatusTip("Set the font for the main display") setFont.triggered.connect(self.showFontDialog) menubar = self.menuBar() self.settingsMenu = menubar.addMenu('&Settings') # settingsMenu. self.settingsMenu.addAction(changeStops) self.settingsMenu.addAction(setFont) self.explainString = 'Keep on top?' font = QFont() font.setPointSize(10) font.setFamily('Arial') self.explainLbl = QLabel(self.explainString) self.explainLbl.setFont(font) self.stayOnTop = QRadioButton('Yes') self.stayOnTop.setChecked(True) self.notOnTop = QRadioButton('No') self.explain = QLabel('Risk Amount.') self.explain.setFont(font) self.risk = QLineEdit('50.00') self.risk.setFont(font) riskString = self.rm.getrisk(50.00) self.display = QLabel(riskString) self.display.setFont(font) grid = QGridLayout() grid.setSpacing(10) grid.addWidget(self.explainLbl, 1, 1) grid.addWidget(self.stayOnTop, 2, 1) grid.addWidget(self.notOnTop, 3, 1) grid.addWidget(self.explain, 4, 1) grid.addWidget(self.risk, 5, 1) grid.addWidget(self.display, 1, 0, 10, 1) container = QWidget() container.setLayout(grid) self.setCentralWidget(container) self.setGeometry(300, 300, 450, 300) self.setWindowTitle('Risk Man') self.stayOnTop.toggled.connect( lambda: self.btn_clk(self.stayOnTop.isChecked(), self.explainLbl)) self.risk.textChanged.connect(self.changeValue) self.settingsMenu.aboutToShow.connect(self.showMenu) self.show()
def welcome_dialog(self): """ Show a modal welcome dialog for OASYS. Reimplemented from `CanvasMainWindow`. """ dialog = welcomedialog.WelcomeDialog(self) dialog.setWindowTitle(self.tr("Welcome to OASYS")) def new_scheme(): if self.new_scheme() == QDialog.Accepted: dialog.accept() def open_scheme(): if self.open_scheme() == QDialog.Accepted: dialog.accept() def open_recent(): if self.recent_scheme() == QDialog.Accepted: dialog.accept() def tutorial(): import webbrowser webbrowser.open("https://github.com/srio/ShadowOui-Tutorial") #if self.tutorial_scheme() == QDialog.Accepted: # dialog.accept() new_action = \ QAction(self.tr("New"), dialog, toolTip=self.tr("Open a new workflow."), triggered=new_scheme, shortcut=QKeySequence.New, icon=canvasmain.canvas_icons("New.svg") ) open_action = \ QAction(self.tr("Open"), dialog, objectName="welcome-action-open", toolTip=self.tr("Open a workflow."), triggered=open_scheme, shortcut=QKeySequence.Open, icon=canvasmain.canvas_icons("Open.svg") ) recent_action = \ QAction(self.tr("Recent"), dialog, objectName="welcome-recent-action", toolTip=self.tr("Browse and open a recent workflow."), triggered=open_recent, shortcut=QKeySequence(Qt.ControlModifier | \ (Qt.ShiftModifier | Qt.Key_R)), icon=canvasmain.canvas_icons("Recent.svg") ) tutorials_action = \ QAction(self.tr("Tutorial"), dialog, objectName="welcome-tutorial-action", toolTip=self.tr("Browse tutorial workflows."), triggered=tutorial, icon=canvasmain.canvas_icons("Tutorials.svg") ) icon = resource_path("icons/Install.svg") addons_action = \ QAction(self.tr("Add-ons"), dialog, objectName="welcome-addons-action", toolTip=self.tr("Install add-ons"), triggered=self.open_addons, icon=QIcon(icon), ) if self.__updatable: addons_action.setText("Update Now") addons_action.setToolTip("Update or install new add-ons") addons_action.setIcon(QIcon(resource_path("icons/Update.svg"))) mbox = QMessageBox( dialog, icon=QMessageBox.Information, text="{} add-on{} {} a newer version.\n" "Would you like to update now?".format( "One" if self.__updatable == 1 else self.__updatable, "s" if self.__updatable > 1 else "", "has" if self.__updatable == 1 else "have"), standardButtons=QMessageBox.Ok | QMessageBox.No, ) mbox.setWindowFlags(Qt.Sheet | Qt.MSWindowsFixedSizeDialogHint) mbox.setModal(True) dialog.show() mbox.show() mbox.finished.connect(lambda r: self.open_addons() if r == QMessageBox.Ok else None) bottom_row = [ self.get_started_action, tutorials_action, self.documentation_action, addons_action ] self.new_action.triggered.connect(dialog.accept) top_row = [new_action, open_action, recent_action] dialog.addRow(top_row, background="light-grass") dialog.addRow(bottom_row, background="light-orange") # Find and hide the welcome dialogs bottom bar. It contains the # Show at startup" check box and we ALWAYS want the Welcome Dialog # to show. bottombar = dialog.findChild(QWidget, name='bottom-bar') if bottombar is not None: bottombar.hide() status = dialog.exec_() dialog.deleteLater() return status
def createActions(self): self.cutAct = QAction( QIcon(':/images/cut.png'), "Cu&t", self, shortcut=QKeySequence.Cut, statusTip="Cut the current selection's contents to the clipboard", triggered=self.cut) self.copyAct = QAction( QIcon(':/images/copy.png'), "&Copy", self, shortcut=QKeySequence.Copy, statusTip="Copy the current selection's contents to the clipboard", triggered=self.copy) self.pasteAct = QAction( QIcon(':/images/paste.png'), "&Paste", self, shortcut=QKeySequence.Paste, statusTip= "Paste the clipboard's contents into the current selection", triggered=self.paste) self.closeAct = QAction("Cl&ose", self, statusTip="Close the active window", triggered=self.mdiArea.closeActiveSubWindow) self.closeAllAct = QAction("Close &All", self, statusTip="Close all the windows", triggered=self.mdiArea.closeAllSubWindows) self.tileAct = QAction("&Tile", self, statusTip="Tile the windows", triggered=self.mdiArea.tileSubWindows) self.cascadeAct = QAction("&Cascade", self, statusTip="Cascade the windows", triggered=self.mdiArea.cascadeSubWindows) self.nextAct = QAction("Ne&xt", self, shortcut=QKeySequence.NextChild, statusTip="Move the focus to the next window", triggered=self.mdiArea.activateNextSubWindow) self.previousAct = QAction( "Pre&vious", self, shortcut=QKeySequence.PreviousChild, statusTip="Move the focus to the previous window", triggered=self.mdiArea.activatePreviousSubWindow) self.separatorAct = QAction(self) self.separatorAct.setSeparator(True) # 메뉴 ACTION을 다이나믹하게 연결해준다 self.MenuActRef = { 'NewFileAct': 0, 'OpnFileAct': 0, 'SavFileAct': 0, 'SavASFileAct': 0, 'AboutAct': 0, 'AboutQTAct': 0, 'ExitAct': 0, 'SwitchLayout': 0, 'MNISTClassifier': 0 } # ******* Create the File Menu ******* self.NewFileAct = QAction(QIcon(':/images/new.png'), '&New File', self) self.NewFileAct.setShortcut("Ctrl+N") self.NewFileAct.setStatusTip('Create a New File') self.NewFileAct.triggered.connect(self.newFile) self.MenuActRef['NewFileAct'] = self.NewFileAct #self.newAct = QAction(QIcon(':/images/new.png'), "&New", self, # shortcut=QKeySequence.New, statusTip="Create a new file", # triggered=self.newFile) # ******* Open File Menu Items ******* self.OpnFileAct = QAction(QIcon(':/images/open.png'), '&Open File', self) self.OpnFileAct.setShortcut("Ctrl+O") self.OpnFileAct.setStatusTip('Open an Existing File') self.OpnFileAct.triggered.connect(self.open) self.MenuActRef['OpnFileAct'] = self.OpnFileAct #self.openAct = QAction(QIcon(':/images/open.png'), "&Open...", self, # shortcut=QKeySequence.Open, statusTip="Open an existing file", # triggered=self.open) # ******* Save File Menu Items ******* self.SavFileAct = QAction(QIcon(':/images/save.png'), '&Save File', self) self.SavFileAct.setShortcut("Ctrl+S") self.SavFileAct.setStatusTip('Save Current File') self.SavFileAct.triggered.connect(self.save) self.MenuActRef['SavFileAct'] = self.SavFileAct #self.saveAct = QAction(QIcon(':/images/save.png'), "&Save", self, # shortcut=QKeySequence.Save, # statusTip="Save the document to disk", triggered=self.save) # ******* SaveAS File Menu Items ******* self.SavASFileAct = QAction('Save &As File', self) self.SavASFileAct.setShortcut("Ctrl+A") self.SavASFileAct.setStatusTip('Save Current File under a new name ') self.SavASFileAct.triggered.connect(self.saveAs) self.MenuActRef['SavASFileAct'] = self.SavASFileAct #self.saveAsAct = QAction("Save &As...", self, # shortcut=QKeySequence.SaveAs, # statusTip="Save the document under a new name", # triggered=self.saveAs) # ******* About Menu Items ******* self.aboutAct = QAction("&About", self) self.aboutAct.setStatusTip("Show the application's About box") self.aboutAct.triggered.connect(self.about) self.MenuActRef['AboutAct'] = self.aboutAct # ******* About QT Menu Items ******* self.aboutAct = QAction("About &Qt", self) self.aboutAct.setStatusTip("Show the Qt library's About box") self.aboutAct.triggered.connect(QApplication.instance().aboutQt) self.MenuActRef['AboutQTAct'] = self.aboutAct # ******* Exit Menu Items ******* self.exitAct = QAction("E&xit", self) self.exitAct.setStatusTip("Exit the application") self.exitAct.triggered.connect(QApplication.instance().closeAllWindows) self.MenuActRef['ExitAct'] = self.exitAct #self.exitAct = QAction("E&xit", self, shortcut=QKeySequence.Quit, # statusTip="Exit the application", # triggered=QApplication.instance().closeAllWindows) # ******* Switch layout Items ******* self.SwitchLayout = QAction("&Switch layout direction", self) self.SwitchLayout.setStatusTip("Switch layout direction") self.SwitchLayout.triggered.connect(self.switchLayoutDirection) self.MenuActRef['SwitchLayout'] = self.SwitchLayout #self.SwitchLayout = QAction("&Switch layout direction", self, # statusTip="Switch layout direction", # triggered=self.switchLayoutDirection) # ******* Switch layout Items ******* self.ShowMNIST = QAction("&Mnist Classifier", self) self.ShowMNIST.setStatusTip("&Mnist Classifier") self.ShowMNIST.triggered.connect(self.showMnist) self.MenuActRef['MNISTClassifier'] = self.ShowMNIST
def initUI(self): self.num = -1 # index for search bar query self.show_save = False # bool for showing unsaved changes dialog self.temp_file = ".temp.csv" self.refresh_file = False # failsafe 1 for itemChanged trigger self.list_1 = QListWidget() lister(file=self.curr_file, target=self.list_1, index=0, mode=0) self.list_1.clicked.connect(self.clear_selection) self.list_1.installEventFilter(self) self.list_items = self.list_1.count( ) # failsafe 2 for itemChanged trigger self.list_1.itemChanged.connect(self.edit_next_item) self.list_1.verticalScrollBar().valueChanged.connect(self.sync_scroll) self.list_2 = QListWidget() lister(file=self.curr_file, target=self.list_2, index=1, mode=0) self.list_2.clicked.connect(self.clear_selection) self.list_3 = QListWidget() lister(file=self.curr_file, target=self.list_3, index=2, mode=0) self.list_3.clicked.connect(self.clear_selection) self.all_lists = [self.list_1, self.list_2, self.list_3] self.menubar = QMenuBar() self.menubar.setNativeMenuBar(False) exit_event = QAction('Exit', self) exit_event.setShortcut('Ctrl+W') exit_event.triggered.connect(app.quit) showAct = QAction('Show extras', self, checkable=True) showAct.setChecked(False) showAct.setShortcut('Ctrl+E') showAct.triggered.connect(self.hide_notes) addAct = QAction('Fields', self) addAct.setShortcut('Ctrl+N') addAct.triggered.connect(self.add_item) fileOpen = QAction('Open file', self) fileOpen.triggered.connect(self.fileDialog) fileOpen.setShortcut('Ctrl+O') fileSave = QAction('Save file', self) fileSave.triggered.connect(self.save) fileSave.triggered.connect(self.refresh_recents) fileSave.setShortcut('Ctrl+S') self.fileRecents = QMenu('Recent file', self) self.refresh_recents() self.toggle_theme = QAction('Toggle theme', self, checkable=True) self.toggle_theme.setChecked(json_theme()) self.toggle_theme.triggered.connect(self.theme) self.toggle_theme.setShortcut('Ctrl+T') self.col_sort_index = QMenu('Sorting column index', self) self.col_sort_index.addAction(QAction(str(0), self)) self.col_sort_index.addAction(QAction(str(1), self)) self.col_sort_index.addAction(QAction(str(2), self)) self.col_sort_index.triggered.connect(self.sort_col_choice) self.col_search_index = QMenu('Searching column index', self) self.col_search_index.addAction(QAction(str(0), self)) self.col_search_index.addAction(QAction(str(1), self)) self.col_search_index.addAction(QAction(str(2), self)) self.col_search_index.triggered.connect(self.search_col_choice) self.sort = QAction('Sort entries', self, checkable=True) self.curr_col = 0 self.search_col = 0 self.sort.triggered.connect(self.refresh_list) self.sort.setShortcut('Ctrl+R') self.addFields = self.menubar.addMenu('Add') self.addFields.addAction(addAct) self.optionMenu = self.menubar.addMenu('Options') self.optionMenu.addAction(exit_event) self.optionMenu.addAction(showAct) self.optionMenu.addAction(self.toggle_theme) self.optionMenu.addMenu(self.col_sort_index) self.optionMenu.addMenu(self.col_search_index) self.optionMenu.addAction(self.sort) self.fileMenu = self.menubar.addMenu('File') self.fileMenu.addAction(fileOpen) self.fileMenu.addAction(fileSave) self.fileMenu.addMenu(self.fileRecents) self.search_bar = QLineEdit() self.search_bar.setPlaceholderText('Search vocab') self.search_bar.setClearButtonEnabled(True) self.search_bar.setMaxLength(10) self.search_bar.returnPressed.connect(self.search_item) self.status_bar = QStatusBar() status(self.status_bar, self.list_1) grid = QGridLayout() grid.setSpacing(10) grid.addWidget(self.menubar, 0, 0) grid.addWidget(self.list_1, 1, 0) grid.addWidget(self.list_2, 1, 1) grid.addWidget(self.list_3, 1, 2) grid.addWidget(self.search_bar, 0, 1) grid.addWidget(self.status_bar) self.theme() self.setLayout(grid) self.setGeometry(*json_window_size()) self.setWindowTitle(f'{split_name(self.curr_file)}') self.show() self.list_1.scrollToBottom() self.list_2.verticalScrollBar().setHidden(True) self.list_3.verticalScrollBar().setHidden(True) self.list_3.setHidden(True)
def initUI(self): ''' 第一個按鈕裡面的東西 ''' addAction = QAction(QIcon('./icon/add.png'), '新增商品', self) addAction.setShortcut('Alt+F1') addAction.setStatusTip('從內部資料庫新增商品') self.addwindow = addWindow() addAction.triggered.connect(self.addwindow.show) setAction = QAction(QIcon('./icon/set.png'), '設定商品', self) setAction.setShortcut('Alt+F2') self.setwindow = setWindow() setAction.triggered.connect(self.setwindow.show) setAction.setStatusTip('設定目前商品的細項') exitAction = QAction(QIcon('./icon/exit.png'), '離開', self) exitAction.setShortcut('Alt+F4') exitAction.triggered.connect(QCoreApplication.instance().quit) exitAction.setStatusTip('離開程式') ''' 第二個按鈕裡面的東西 ''' writeAction = QAction(QIcon('./icon/write.png'), '編寫', self) writeAction.setShortcut('Alt+W') self.writewindow = writeWindow() writeAction.triggered.connect(self.writewindow.show) writeAction.setStatusTip('手動編寫交易策略') checkAction = QAction(QIcon('./icon/check.png'), '查看', self) checkAction.setShortcut('Alt+C') self.checkwindow = checkWindow() checkAction.triggered.connect(self.checkwindow.show) checkAction.setStatusTip('查看內建的交易策略') ''' 第三個按鈕裡面的東西 ''' reportAction = QAction(QIcon('./icon/report.png'), '策略績效報告', self) reportAction.setShortcut('Alt+R') reportAction.setStatusTip('檢視此次交易策略之績效報告') #self.reportwindow = reportWindow() #self.reportwindow = tab_widget() reportAction.triggered.connect(self.re) ''' 第四個按鈕裡面的東西 ''' exchangeAction = QAction(QIcon('./icon/exchange.png'), '選擇證券交易所', self) self.exchangewindow = exchangeWindow() exchangeAction.setShortcut('Alt+X') exchangeAction.triggered.connect(self.exchangewindow.show) exchangeAction.setStatusTip('選擇欲交易之證券交易所') orderAction = QAction(QIcon('./icon/order.png'), '下單', self) self.tradewindow = tradeWindow() orderAction.setShortcut('Alt+O') orderAction.triggered.connect(self.tradewindow.show) orderAction.setStatusTip('與證券交易所進行交易') ''' 第五個按鈕 ''' loginAction = QAction(QIcon('./icon/login.png'), '登入', self) self.loginwindow = loginWindow() loginAction.setShortcut('Alt+L') loginAction.triggered.connect(self.loginwindow.show) loginAction.setStatusTip('登入') self.statusBar() menubar = self.menuBar() fileMenu = menubar.addMenu('商品') fileMenu2 = menubar.addMenu('交易策略') fileMenu3 = menubar.addMenu('檢視績效報告') fileMenu4 = menubar.addMenu('下單接口') fileMenu5 = menubar.addMenu('進階') fileMenu.addAction(addAction) fileMenu.addAction(setAction) fileMenu.addAction(exitAction) fileMenu2.addAction(writeAction) fileMenu2.addAction(checkAction) fileMenu3.addAction(reportAction) fileMenu4.addAction(exchangeAction) fileMenu4.addAction(orderAction) fileMenu5.addAction(loginAction) self.setWindowTitle('iTrader v0723') self.show()
def createActions(self): self.cell_sumAction = QAction("Sum", self) self.cell_sumAction.triggered.connect(self.actionSum) self.cell_addAction = QAction("&Add", self) self.cell_addAction.setShortcut(Qt.CTRL | Qt.Key_Plus) self.cell_addAction.triggered.connect(self.actionAdd) self.cell_subAction = QAction("&Subtract", self) self.cell_subAction.setShortcut(Qt.CTRL | Qt.Key_Minus) self.cell_subAction.triggered.connect(self.actionSubtract) self.cell_mulAction = QAction("&Multiply", self) self.cell_mulAction.setShortcut(Qt.CTRL | Qt.Key_multiply) self.cell_mulAction.triggered.connect(self.actionMultiply) self.cell_divAction = QAction("&Divide", self) self.cell_divAction.setShortcut(Qt.CTRL | Qt.Key_division) self.cell_divAction.triggered.connect(self.actionDivide) self.fontAction = QAction("Font...", self) self.fontAction.setShortcut(Qt.CTRL | Qt.Key_F) self.fontAction.triggered.connect(self.selectFont) self.colorAction = QAction(QIcon(QPixmap(16, 16)), "Background &Color...", self) self.colorAction.triggered.connect(self.selectColor) self.clearAction = QAction("Clear", self) self.clearAction.setShortcut(Qt.Key_Delete) self.clearAction.triggered.connect(self.clear) self.aboutSpreadSheet = QAction("About Spreadsheet", self) self.aboutSpreadSheet.triggered.connect(self.showAbout) self.exitAction = QAction("E&xit", self) self.exitAction.setShortcut(QKeySequence.Quit) self.exitAction.triggered.connect(QApplication.instance().quit) self.printAction = QAction("&Print", self) self.printAction.setShortcut(QKeySequence.Print) self.printAction.triggered.connect(self.print_) self.firstSeparator = QAction(self) self.firstSeparator.setSeparator(True) self.secondSeparator = QAction(self) self.secondSeparator.setSeparator(True)
def criar_acao(self, parent): acao_placa = QAction(PlacaAlvo.capitalizar(self.get_id()), parent) acao_placa.triggered.connect(functools.partial(self.selecionar_placa, self, parent)) return acao_placa
def __init__(self): super(MainWindow, self).__init__() self.commandslist = [] self.tracker = 0 os.chdir(os.path.expanduser("~")) # print(os.getcwd()) self.name = (str(getpass.getuser()) + "@" + str(socket.gethostname()) + ":" + str(os.getcwd()) + "$ ") self.setWindowTitle('PyQt5Terminal') self.setWindowIcon(QIcon.fromTheme("terminal-emulator")) self.process = QProcess(self) self.process.setProcessChannelMode(QProcess.MergedChannels) self.process.readyRead.connect(self.dataReady) self.process.readyReadStandardError.connect( self.onReadyReadStandardError) self.process.readyReadStandardOutput.connect( self.onReadyReadStandardOutput) self.process.finished.connect(self.isFinished) self.process.setWorkingDirectory(os.getcwd()) self.createStatusBar() self.commandfield = QPlainTextEdit() self.commandfield.setLineWrapMode(QPlainTextEdit.NoWrap) self.commandfield.setFixedHeight(44) self.commandfield.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.commandfield.setAcceptDrops(True) self.cursor = self.commandfield.textCursor() self.textWindow = QPlainTextEdit(self) self.setStyleSheet(mystylesheet(self)) self.textWindow.setReadOnly(True) layout = QVBoxLayout() layout.addWidget(self.textWindow) layout.addWidget(self.commandfield) self.wid = QWidget() self.wid.setLayout(layout) self.setCentralWidget(self.wid) self.setGeometry(0, 0, 600, 500) self.commandfield.setPlainText(self.name) self.cursorEnd() self.commandfield.setFocus() self.copySelectedTextAction = QAction(QIcon.fromTheme("edit-copy"), "Copy", shortcut="Shift+Ctrl+c", triggered=self.copyText) self.textWindow.addAction(self.copySelectedTextAction) self.pasteTextAction = QAction(QIcon.fromTheme("edit-paste"), "Copy", shortcut="Shift+Ctrl+v", triggered=self.pasteText) self.commandfield.addAction(self.pasteTextAction) # self.cancelAction = QAction("Cancel", shortcut="Ctrl+c", triggered=self.killProcess) self.textWindow.addAction(self.cancelAction) self.commandfield.installEventFilter(self) # self.textWindow.installEventFilter(self) QApplication.setCursorFlashTime(1000) self.cursorEnd() print(self.process.workingDirectory()) self.settings = QSettings("QTerminal", "QTerminal") self.readSettings()
def createActions(self): self.newAct = QAction(QIcon(':/images/new.png'), "&New", self, shortcut=QKeySequence.New, statusTip="Create a new file", triggered=self.newFile) self.openAct = QAction(QIcon(':/images/open.png'), "&Open...", self, shortcut=QKeySequence.Open, statusTip="Open an existing file", triggered=self.open) self.saveAct = QAction(QIcon(':/images/save.png'), "&Save", self, shortcut=QKeySequence.Save, statusTip="Save the document to disk", triggered=self.save) self.saveAsAct = QAction( "Save &As...", self, shortcut=QKeySequence.SaveAs, statusTip="Save the document under a new name", triggered=self.saveAs) self.closeAct = QAction("&Close", self, shortcut="Ctrl+W", statusTip="Close this window", triggered=self.close) self.exitAct = QAction( "E&xit", self, shortcut="Ctrl+Q", statusTip="Exit the application", triggered=QApplication.instance().closeAllWindows) self.cutAct = QAction( QIcon(':/images/cut.png'), "Cu&t", self, enabled=False, shortcut=QKeySequence.Cut, statusTip="Cut the current selection's contents to the clipboard", triggered=self.textEdit.cut) self.copyAct = QAction( QIcon(':/images/copy.png'), "&Copy", self, enabled=False, shortcut=QKeySequence.Copy, statusTip="Copy the current selection's contents to the clipboard", triggered=self.textEdit.copy) self.pasteAct = QAction( QIcon(':/images/paste.png'), "&Paste", self, shortcut=QKeySequence.Paste, statusTip= "Paste the clipboard's contents into the current selection", triggered=self.textEdit.paste) self.aboutAct = QAction("&About", self, statusTip="Show the application's About box", triggered=self.about) self.aboutQtAct = QAction("About &Qt", self, statusTip="Show the Qt library's About box", triggered=QApplication.instance().aboutQt) self.textEdit.copyAvailable.connect(self.cutAct.setEnabled) self.textEdit.copyAvailable.connect(self.copyAct.setEnabled)