Chapter 12-QMainWindow and QAction (cut-copy-paste)

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 "))
View Code

 

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_())
View Code

 

ok.

 

Guess you like

Origin www.cnblogs.com/smart-zihan/p/12689492.html