• 第十二篇 -- QMainWindow与QAction(剪切-复制-粘贴)


    效果图:

     按照上一节的方法,将剪切-复制-粘贴图标放置到工具栏后,为其指定槽函数。这些功能无需自己编写代码来实现,QPlainTextEdit提供了实现这些编辑功能的槽函数,如cut()、copy()、paste()等,只需要将这些Action和相应的槽函数关联即可。

    然后将ui转换成py文件,执行即可。

    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("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("MainWindow", "复制到粘贴板"))
            self.actEdit_Copy.setShortcut(_translate("MainWindow", "Ctrl+C"))
            self.actEdit_Paste.setText(_translate("MainWindow", "粘贴"))
            self.actEdit_Paste.setToolTip(_translate("MainWindow", "从粘贴板粘贴"))
            self.actEdit_Paste.setShortcut(_translate("MainWindow", "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
    
    from ui_mainWindow import Ui_MainWindow
    
    
    class QmyMainWindow(QMainWindow):
        def __init__(self, parent=None):
            super().__init__(parent)
            self.ui = Ui_MainWindow()
            self.ui.setupUi(self)
    
            # 设置斜体
            self.ui.actFont_Italic.triggered.connect(self.do_act_font_italic_triggered)
            # 设置粗体
            self.ui.actFont_Bold.triggered.connect(self.do_act_font_bold_triggered)
            # 设置下划线
            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.

  • 相关阅读:
    Redis企业级数据备份与恢复方案
    使用canal增量同步mysql数据库信息到ElasticSearch
    SpringBoot基于数据库实现简单的分布式锁
    SpringBoot+ShardingSphere实现分库分表 + 读写分离
    SpringBoot 使用JestClient操作Elasticsearch
    Java 操作 MongoDB
    VS C#开发中WinForm中Setting.settings的作用
    Sql 触发器禁用和启用
    ROW_NUMBER over (order by **)
    Aspen 安装
  • 原文地址:https://www.cnblogs.com/smart-zihan/p/12689492.html
Copyright © 2020-2023  润新知