第十三篇 -- QMainWindow与QAction(新建-打开-保存)
效果图:
添加了三个Action,分别是新建,打开,和保存,没有具体写相应的功能,只是提供了一个接口,可以自己写相应的功能。这次不仅将这些Action放在了工具栏,还将其添加到了菜单栏。方法同样是直接将Action拖到菜单栏相应的位置就行了,和工具栏一样,就不赘述了。
另外,还添加了状态栏,create statusBar,如果在界面上找不到右击的地方,可以在Object Inspector那个地方右击添加。创建了状态栏之后,可以使用代码在窗体窗体创建后在动态添加组件self.__buildUI()。
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.statusBar = QtWidgets.QStatusBar(MainWindow)
- self.statusBar.setObjectName("statusBar")
- MainWindow.setStatusBar(self.statusBar)
- 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.actFile_New = QtWidgets.QAction(MainWindow)
- icon6 = QtGui.QIcon()
- icon6.addPixmap(QtGui.QPixmap("icons/images/new.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.actFile_New.setIcon(icon6)
- self.actFile_New.setObjectName("actFile_New")
- self.actFile_Open = QtWidgets.QAction(MainWindow)
- icon7 = QtGui.QIcon()
- icon7.addPixmap(QtGui.QPixmap("icons/images/open.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.actFile_Open.setIcon(icon7)
- self.actFile_Open.setObjectName("actFile_Open")
- self.actFile_Save = QtWidgets.QAction(MainWindow)
- icon8 = QtGui.QIcon()
- icon8.addPixmap(QtGui.QPixmap("icons/images/save.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
- self.actFile_Save.setIcon(icon8)
- self.actFile_Save.setObjectName("actFile_Save")
- self.menu.addAction(self.actFile_New)
- self.menu.addAction(self.actFile_Open)
- self.menu.addAction(self.actFile_Save)
- self.menu.addSeparator()
- self.menu_2.addAction(self.actEdit_Cut)
- self.menu_2.addAction(self.actEdit_Copy)
- self.menu_2.addAction(self.actEdit_Paste)
- self.menu_2.addSeparator()
- self.menu_3.addAction(self.actFont_Italic)
- self.menu_3.addAction(self.actFont_Bold)
- self.menu_3.addAction(self.actFont_Underline)
- self.menu_3.addSeparator()
- self.menubar.addAction(self.menu.menuAction())
- self.menubar.addAction(self.menu_2.menuAction())
- self.menubar.addAction(self.menu_3.menuAction())
- self.toolBar.addAction(self.actFile_New)
- self.toolBar.addAction(self.actFile_Open)
- self.toolBar.addAction(self.actFile_Save)
- 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.toolBar.addAction(self.actFont_Italic)
- self.toolBar.addAction(self.actFont_Bold)
- self.toolBar.addSeparator()
- self.toolBar.addAction(self.actFont_Underline)
- 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"))
- self.actFile_New.setText(_translate("MainWindow", "新建"))
- self.actFile_New.setToolTip(_translate("MainWindow", "新建文件"))
- self.actFile_New.setShortcut(_translate("MainWindow", "Ctrl+N"))
- self.actFile_Open.setText(_translate("MainWindow", "打开..."))
- self.actFile_Open.setToolTip(_translate("MainWindow", "打开文件"))
- self.actFile_Open.setShortcut(_translate("MainWindow", "Ctrl+O"))
- self.actFile_Save.setText(_translate("MainWindow", "保存"))
- self.actFile_Save.setToolTip(_translate("MainWindow", "保存修改"))
- self.actFile_Save.setShortcut(_translate("MainWindow", "Ctrl+S"))
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.__buildUI()
- # 设置斜体
- 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)
- # 新建文件
- self.ui.actFile_New.triggered.connect(self.do_act_file_new_triggered)
- # 打开文件
- self.ui.actFile_Open.triggered.connect(self.do_act_file_open_triggered)
- # 保存文件
- self.ui.actFile_Save.triggered.connect(self.do_act_file_save_triggered)
- def __buildUI(self): # 窗体上动态添加组件
- # 创建状态栏上的组件
- self.__LabFile = QLabel(self) # QLabel组件显示信息
- self.__LabFile.setMinimumWidth(150)
- self.__LabFile.setText("文件名:")
- self.ui.statusBar.addWidget(self.__LabFile) # 添加到状态栏
- self.__progressBar1 = QProgressBar(self)
- self.__progressBar1.setMaximumWidth(200)
- self.__progressBar1.setMinimum(5)
- self.__progressBar1.setMaximum(50)
- sz = self.ui.plainTextEdit.font().pointSize() # 字体大小
- self.__progressBar1.setValue(sz)
- self.ui.statusBar.addWidget(self.__progressBar1) # 添加到状态栏
- self.__LabInfo = QLabel(self) # QLabel组件显示字体名称
- self.__LabInfo.setText("选择字体名称:")
- self.ui.statusBar.addPermanentWidget(self.__LabInfo) # 添加到状态栏
- @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)
- def do_act_file_new_triggered(self): # 新建文件,不实现具体功能
- self.__LabFile.setText(" 新建文件")
- def do_act_file_open_triggered(self): # 打开文件,不实现具体功能
- self.__LabFile.setText(" 打开的文件")
- def do_act_file_save_triggered(self): # 保存文件,不实现具体功能
- self.__LabFile.setText(" 文件已保存")
- if __name__ == "__main__":
- app = QApplication(sys.argv) # 创建app,用QApplication类
- form = QmyMainWindow()
- form.show()
- sys.exit(app.exec_())
ok.
第十三篇 -- QMainWindow与QAction(新建-打开-保存)的更多相关文章
- 第十四篇 -- QMainWindow与QAction(清空-全选-撤销-重做-关闭-语言选择)
效果图: 这次添加了关闭-撤销-重做-全选-清空等功能,并添加了字体和字体大小选择.基本方法跟前面几篇类似. ui_mainWindow.py # -*- coding: utf-8 -*- # Fo ...
- 第十一篇 -- QMainWindow与QAction(斜体-粗体-下划线)
效果图: ui_mainWindow.py # -*- coding: utf-8 -*- # Form implementation generated from reading ui file ' ...
- 第十二篇 -- QMainWindow与QAction(剪切-复制-粘贴)
效果图: 按照上一节的方法,将剪切-复制-粘贴图标放置到工具栏后,为其指定槽函数.这些功能无需自己编写代码来实现,QPlainTextEdit提供了实现这些编辑功能的槽函数,如cut().copy() ...
- 第十三篇 Integration Services:SSIS变量
本篇文章是Integration Services系列的第十三篇,详细内容请参考原文. 简介在前一篇我们结合了之前所学的冒泡.日志记录.父子模式创建一个自定义的SSIS包日志记录模式.在这一篇,我们将 ...
- Qt 文本文件的打开、新建、保存以及另存为
我们平时在使用windows的notepad以及其他各种软件过程中,都会有保存文件和另存为两种功能,这两者不能混为一谈. 一.保存时有两种情况,一种是对于新创建的文件,一种是对于已有的文件,前者需要打 ...
- 【译】第十三篇 Integration Services:SSIS变量
本篇文章是Integration Services系列的第十三篇,详细内容请参考原文. 简介在前一篇我们结合了之前所学的冒泡.日志记录.父子模式创建一个自定义的SSIS包日志记录模式.在这一篇,我们将 ...
- 解剖SQLSERVER 第十三篇 Integers在行压缩和页压缩里的存储格式揭秘(译)
解剖SQLSERVER 第十三篇 Integers在行压缩和页压缩里的存储格式揭秘(译) http://improve.dk/the-anatomy-of-row-amp-page-compre ...
- Python之路【第十三篇】:jQuery -暂无内容-待更新
Python之路[第十三篇]:jQuery -暂无内容-待更新
- Python开发【第二十三篇】:持续更新中...
Python开发[第二十三篇]:持续更新中...
随机推荐
- zabbix 发现 vmvare esxi6.7 虚拟主机
1:服务端配置确认 确保 #vi /etc/zabbiz/zabbix-server/zabbix_server.conf ## 确认其中有 StartVMwareCollectors项目 值 > ...
- Qt中的多线程与线程池浅析+实例
1. Qt中的多线程与线程池 今天学习了Qt中的多线程和线程池,特写这篇博客来记录一下 2. 多线程 2.1 线程类 QThread Qt 中提供了一个线程类,通过这个类就可以创建子线程了,Qt 中一 ...
- js笔记17
BOM浏览器对象模型 1.window.open(url,ways) url 是打开的网页地址 ways 打开的方式 _self 2.window.close() 3.浏览器用户的信息 window ...
- Keyboarding(信息学奥赛一本通-T1452)
[题目描述] 出自 World Final 2015 F. Keyboarding 给定一个 r 行 c 列的在电视上的"虚拟键盘",通过「上,下,左,右,选择」共 5 个控制键, ...
- FlowNet:simple / correlation 与 相关联操作
Flow Net : simple / correlation 与 相关联操作 上一篇文章中(还没来得及写),已经简单的讲解了光流是什么以及光流是如何求得的.同时介绍了几个光流领域的经典传统算法. ...
- Python之面向对象编程【小明跑步】、【置办家具】
#!usr/bin/python 2 #encoding=utf-8 3 #-----------------小明跑步------------- 4 #1.小明体重75.0公斤 5 #2.小明每次跑步 ...
- Min25 筛与 Powerful Numbers
Min25 筛与 Powerful Numbers Min25 筛 大喊一声 Min25 NB!!! 这是一个非常神奇的东西,用于求更加普遍的积性函数的前缀和. 比如我们要求 \(\sum_{i=1} ...
- python使用笔记14--商品管理小练习
1 import json 2 import pymysql 3 IP = '127.0.0.1' 4 PORT = 3306 5 USER_NAME = 'root' 6 PASSWORD = '1 ...
- 管理员的基本防范措施 Linux系统安全及应用
系统安全及应用一.账号安全基本措施① 系统账号清理② 密码安全控制③ 命令历史限制④ 终端自动注销二.SU命令切换用户① 用途及用法② 验证密码③ 限制使用su命令的用户④ 查看su操作记录补充三.L ...
- HCNA Routing&Switching之动态路由协议OSPF建立邻居的条件
前文我们了解了OSPF的router id.数据包结构.类型.不同类型的数据包作用以及OSPF状态机制,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15027 ...