Effect picture:
According to the method in the previous section, after placing the cut-copy-paste icon on the toolbar, specify the slot function for it. These functions do not need to be written by yourself. QPlainTextEdit provides slot functions to implement these editing functions, such as cut (), copy (), paste (), etc., you only need to associate these actions with the corresponding slot functions.
Then convert the ui into a py file and execute it.
ui_mainWindow.py
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'ui_mainWindow.ui' # # Created by: PyQt5 UI code generator 5.13.0 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(532, 367) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.plainTextEdit = QtWidgets.QPlainTextEdit(self.centralwidget) self.plainTextEdit.setGeometry(QtCore.QRect(0, 0, 531, 291)) font = QtGui.QFont() font.setPointSize(18) self.plainTextEdit.setFont(font) self.plainTextEdit.setObjectName("plainTextEdit") MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 532, 21)) self.menubar.setObjectName("menubar") self.menu = QtWidgets.QMenu(self.menubar) self.menu.setObjectName("menu") self.menu_2 = QtWidgets.QMenu(self.menubar) self.menu_2.setObjectName("menu_2") self.menu_3 = QtWidgets.QMenu(self.menubar) self.menu_3.setObjectName("menu_3") MainWindow.setMenuBar(self.menubar) self.toolBar = QtWidgets.QToolBar(MainWindow) self.toolBar.setToolButtonStyle(QtCore.Qt.ToolButtonIconOnly) self.toolBar.setObjectName("toolBar") MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar) self.actFont_Italic = QtWidgets.QAction(MainWindow) self.actFont_Italic.setCheckable(True) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap("icons/images/Italic.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actFont_Italic.setIcon(icon) self.actFont_Italic.setObjectName("actFont_Italic") self.actFont_Bold = QtWidgets.QAction(MainWindow) self.actFont_Bold.setCheckable(True) icon1 = QtGui.QIcon() icon1.addPixmap(QtGui.QPixmap("icons/images/Bold.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actFont_Bold.setIcon(icon1) self.actFont_Bold.setObjectName("actFont_Bold") self.actFont_Underline = QtWidgets.QAction(MainWindow) self.actFont_Underline.setCheckable(True) icon2 = QtGui.QIcon() icon2.addPixmap(QtGui.QPixmap("icons/images/underline.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actFont_Underline.setIcon(icon2) self.actFont_Underline.setObjectName("actFont_Underline") self.actEdit_Cut = QtWidgets.QAction(MainWindow) icon3 = QtGui.QIcon() icon3.addPixmap(QtGui.QPixmap("icons/images/cut.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actEdit_Cut.setIcon(icon3) self.actEdit_Cut.setObjectName("actEdit_Cut") self.actEdit_Copy = QtWidgets.QAction(MainWindow) icon4 = QtGui.QIcon() icon4.addPixmap(QtGui.QPixmap("icons/images/copy.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actEdit_Copy.setIcon(icon4) self.actEdit_Copy.setObjectName("actEdit_Copy") self.actEdit_Paste = QtWidgets.QAction(MainWindow) icon5 = QtGui.QIcon() icon5.addPixmap(QtGui.QPixmap("icons/images/paste.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.actEdit_Paste.setIcon(icon5) self.actEdit_Paste.setObjectName("actEdit_Paste") self.menubar.addAction(self.menu.menuAction()) self.menubar.addAction(self.menu_2.menuAction()) self.menubar.addAction(self.menu_3.menuAction()) self.toolBar.addAction(self.actFont_Italic) self.toolBar.addSeparator() self.toolBar.addAction(self.actFont_Bold) self.toolBar.addSeparator() self.toolBar.addAction(self.actFont_Underline) self.toolBar.addSeparator() self.toolBar.addAction(self.actEdit_Cut) self.toolBar.addAction(self.actEdit_Copy) self.toolBar.addAction(self.actEdit_Paste) self.toolBar.addSeparator() self.retranslateUi(MainWindow) self.actEdit_Cut.triggered.connect(self.plainTextEdit.cut) self.actEdit_Copy.triggered.connect(self.plainTextEdit.copy) self.actEdit_Paste.triggered.connect(self.plainTextEdit.paste) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) self.menu.setTitle(_translate("MainWindow", "文件(F)")) self.menu_2.setTitle(_translate("MainWindow", "编辑(E)")) self.menu_3.setTitle(_translate("MainWindow", "格式(M)")) self.toolBar.setWindowTitle(_translate("MainWindow", "toolBar")) self.actFont_Italic.setText(_translate("MainWindow", "斜体")) self.actFont_Italic.setToolTip(_translate("MainWindow", "<html><head/><body><p><span style=\" font-style:italic;\">斜体</span></p></body></html>")) self.actFont_Bold.setText(_translate("MainWindow", "粗体")) self.actFont_Bold.setToolTip(_translate("MainWindow", "加粗")) self.actFont_Underline.setText(_translate("MainWindow", "下划线")) self.actFont_Underline.setToolTip(_translate("Underline","MainWindow")) self.actEdit_Cut.setText(_translate("MainWindow", "剪切")) self.actEdit_Cut.setToolTip(_translate("MainWindow", "剪切到粘贴板")) self.actEdit_Cut.setShortcut(_translate("MainWindow", "Ctrl+X")) self.actEdit_Copy.setText(_translate("MainWindow", "复制")) self.actEdit_Copy.setToolTip (_translate ( " MainWindowMainWindow" , " Copy to pasteboard " )) self.actEdit_Copy.setShortcut (_translate ( " MainWindow " , " Ctrl + C " )) self.actEdit_Paste.setText (_translate ( " MainWindow " , " Paste " )) self.actEdit_Paste. setToolTip (_translate ( " MainWindow " , " Paste from pasteboard " )) self.actEdit_Paste.setShortcut (_translate ( " " , " Ctrl + V "))
myMainWindow.py
#!/usr/bin/env python # _*_ coding: UTF-8 _*_ """================================================= @Project -> File : Operate-system -> myMainWindow.py @IDE : PyCharm @Author : zihan @Date : 2020/4/11 14:44 @Desc : =================================================""" import sys from PyQt5.QtWidgets import (QApplication, QMainWindow, QActionGroup, QLabel, QProgressBar, QSpinBox, QFontComboBox) from PyQt5.QtCore import Qt, pyqtSlot from PyQt5.QtGui import QTextCharFormat, QFont fromui_mainWindow Import Ui_MainWindow class QmyMainWindow (The QMainWindow): DEF the __init__ (Self, parent = None): . Super () the __init__ (parent) self.ui = Ui_MainWindow () self.ui.setupUi (Self) # Set italics self.ui.actFont_Italic .triggered.connect (self.do_act_font_italic_triggered) # set bold self.ui.actFont_Bold.triggered.connect (self.do_act_font_bold_triggered) # set underscore self.ui.actFont_Underline.triggered.connect (self.do_act_underline_triggered) @pyqtSlot (BOOL) DEF do_act_font_italic_triggered(self, checked): # 斜体 fmt = self.ui.plainTextEdit.currentCharFormat() fmt.setFontItalic(checked) self.ui.plainTextEdit.mergeCurrentCharFormat(fmt) @pyqtSlot(bool) def do_act_font_bold_triggered(self, checked): # 粗体 fmt = self.ui.plainTextEdit.currentCharFormat() if checked: fmt.setFontWeight(QFont.Bold) else: fmt.setFontWeight(QFont.Normal) self.ui.plainTextEdit.mergeCurrentCharFormat(fmt) @pyqtSlot(bool) def do_act_underline_triggered(self, checked): # 下划线 fmt = self.ui.plainTextEdit.currentCharFormat() fmt.setFontUnderline(checked) self.ui.plainTextEdit.mergeCurrentCharFormat(fmt) if __name__ == "__main__": app = QApplication(sys.argv) # 创建app,用QApplication类 form = QmyMainWindow() form.show() sys.exit(app.exec_())
ok.