首页 > 编程知识 正文

pyqt5从入门到实践 pdf,pyqt5快速开发与实战

时间:2023-05-06 07:33:59 阅读:17233 作者:2825

q操作概述在典型的GUI程序中,用户界面通常使用不同的操作方法来执行相同的操作。 例如,要在一个APP应用程序中创建新文件,请使用菜单栏上的“文件”--“新建”菜单项,或单击工具栏上的“新建文件”图标。 这是一个qtoolbutton。pyqt提供了一个QAction类,用于封装用户应该执行的操作。 这样,可以独立地将其与菜单栏、工具栏或快捷键相关联。 这样可以很好地分离接口的操作方法和具体行为,减少代码之间的耦合性,提高可维护性。 简言之,QAction是用于自定义菜单栏、工具栏或快捷键的抽象操作行为。

q操作的常见方法如下:

设置setIcon ()图标; setText () :设置要显示的文本; 设置工具(:设置提示文本; setShortcut (:设置快捷键; setCheckable () :设置check选择模式; 设置setChecked ()选中/禁用(在菜单前选中或不选中)。 q动作的一般信号:

触发:点击时发出,()最常用); hovered :老鼠在上空漂浮时发射这个信号; toggled :如果选择了状态,则checked为True,将发送此参数; changed :如果q action的状态发生变化,则发送。 例如,图标增加或文字改变。 QAction类继承关系:

在测试QAction之前的文章中,添加了一个不带的菜单项,在实践中添加了一系列QAction行为。 但是,在对应的动作中添加槽函数,并不具体进行该动作,在本篇中实现了其具体操作。

将notepad.py的原始代码扩展到基础上,完成基本的文本编辑器。 具有创建新文件、打开文件、编辑文件、保存文件等基本功能。 完整的代码如下。

importsysfromPyQt5importQtCore,QtGui,qtwidgetsfrompyqt5. qtcoreimportqtfrompyqt5. qtwidgetsimport (qplaintextedit,q ststed qmessagebox (classdemonotepad (qmainwindow ) :def__init_ ) self,pareetepad )。 self(_init_ ) (parent )窗口标题集self.setWindowTitle (实战PyQt5:QActionDemo-记事本) )窗口大小设置self.resize lf ) :#将文本编辑器设置为中央小部件self.txt editor=qplaintextedit (self ) self.init menubar (definit menubar ) sellf 格式菜单=menubar.addmenu (格式(o ) ) helpMenu=menuBar.addMenu (帮助) h ) ) style=QApplication.style 添加图标afile new.seticon (style.standard icon ) qstyle.sp_fileicon ) )快捷方式添加afilenew.setshortcut ) Qt.ctrlqt enu.addaction )文件aFileOpen=QAction ) '打开) (o ) .'文件

      aFileOpen.setIcon(style.standardIcon(QStyle.SP_DialogOpenButton))        aFileOpen.setShortcut(Qt.CTRL + Qt.Key_O)        aFileOpen.triggered.connect(self.onFileOpen)        fileMenu.addAction(aFileOpen)              #保存        aFileSave = QAction('保存(&S)', self)         aFileSave.setIcon(style.standardIcon(QStyle.SP_DialogSaveButton))         aFileSave.setShortcut(Qt.CTRL + Qt.Key_S)        aFileSave.triggered.connect(self.onFileSave)          fileMenu.addAction(aFileSave)                #另存为        aFileSaveAs = QAction('另存为(&A)...', self)        aFileSaveAs.triggered.connect(self.onFileSaveAs)        fileMenu.addAction(aFileSaveAs)               #间隔线        fileMenu.addSeparator()                #退出菜单        aFileExit = QAction('退出(&X)', self)         aFileExit.triggered.connect(self.close)        fileMenu.addAction(aFileExit)                # ==== 编辑部分 ==== #        #撤销编辑        aEditUndo = QAction('撤销(&U)',self)        aEditUndo.setShortcut(Qt.CTRL + Qt.Key_Z)        aEditUndo.triggered.connect(self.txtEditor.undo)        editMenu.addAction(aEditUndo)        #恢复编辑        aEditRedo = QAction('恢复(&R)', self)        aEditRedo.setShortcut(Qt.CTRL + Qt.Key_Y)        aEditUndo.triggered.connect(self.txtEditor.redo)        editMenu.addAction(aEditRedo)        #间隔线        editMenu.addSeparator()                #剪切操作        aEditCut = QAction('剪切(&T)', self)        aEditCut.setShortcut(Qt.CTRL + Qt.Key_X)        aEditCut.triggered.connect(self.txtEditor.cut)        editMenu.addAction(aEditCut)        #复制操作        aEditCopy = QAction('复制(&C)', self)        aEditCopy.setShortcut(Qt.CTRL + Qt.Key_C)        aEditCopy.triggered.connect(self.txtEditor.copy)        editMenu.addAction(aEditCopy)        #粘贴操作        aEditPaste = QAction('粘贴(&P)', self)        aEditPaste.setShortcut(Qt.CTRL + Qt.Key_V)        aEditPaste.triggered.connect(self.txtEditor.paste)        editMenu.addAction(aEditPaste)        #删除操作        aEditDel = QAction('删除(&L)', self)        aEditDel.setShortcut(Qt.Key_Delete)        aEditDel.triggered.connect(self.onEditDelete)        editMenu.addAction(aEditDel)        #添加分割线        editMenu.addSeparator()        #全选操作        aEditSelectAll = QAction('全选(&A)', self)        aEditSelectAll.setShortcut(Qt.CTRL + Qt.Key_A)        aEditSelectAll.triggered.connect(self.txtEditor.selectAll)        editMenu.addAction(aEditSelectAll)                # ==== 格式设置部分 ==== #        aFmtAutoLine = QAction('自动换行(&W)', self)        aFmtAutoLine.setCheckable(True)        aFmtAutoLine.setChecked(True)        aFmtAutoLine.triggered[bool].connect(self.onFormatAutoLine)        formatMenu.addAction(aFmtAutoLine)                # ==== 帮助部分 ==== #        aHelpAbout = QAction('关于(&A)...', self)        aHelpAbout.triggered.connect(self.onHelpAbout)        helpMenu.addAction(aHelpAbout)                   def msgCritical(self, strInfo):        dlg = QMessageBox(self)        dlg.setIcon(QMessageBox.Critical)        dlg.setText(strInfo)        dlg.show()            def onFileNew(self):        self.txtEditor.clear()            def onFileOpen(self):        path,_ = QFileDialog.getOpenFileName(self, '打开文件', '', '文本文件 (*.txt)')        if path:            try:                with open(path, 'rU') as f:                    text = f.read()            except Exception as e:                self.msgCritical(str(e))            else:                self.path = path                self.txtEditor.setPlainText(text)                    def onFileSave(self):        if self.path is None:            return self.onFileSaveAs()        self._saveToPath(self.path)            def onFileSaveAs(self):        path,_ = QFileDialog.getSaveFileName(self, '保存文件', '', '文本文件 (*.txt)')        if not path:            return        self._saveToPath(path)                    def _saveToPath(self, path):        text = self.txtEdit.toPlainText()        try:            with open(path, 'w') as f:                f.write(text)        except Exception as e:            self.msgCritical(str(e))        else:            self.path = path                def onEditDelete(self):        tc = self.txtEditor.textCursor()        #tc.select(QtGui.QTextCursor.BlockUnderCursor) 这样删除一行        tc.removeSelectedText()        def onFormatAutoLine(self, autoLine):        if autoLine:            self.txtEditor.setLineWrapMode(QPlainTextEdit.WidgetWidth)        else:            self.txtEditor.setLineWrapMode(QPlainTextEdit.NoWrap)        def onHelpAbout(self):        QMessageBox.information(self, '实战PyQt5', 'PyQt5实现的文本编辑器演示版')   if __name__ == '__main__':    app = QApplication(sys.argv)    window = DemoNotepad()    window.show()    sys.exit(app.exec()) 

运行结果如下图:

测试QAction

本文知识点 QAction常用函数;打开和保存文件;QPlainExitText常用编辑操作;QAction设置成check状态。

前一篇: 实战PyQt5: 041-菜单控件QMenu

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。