转:https://mp.weixin.qq.com/s/Wy1iTYoX7_O81ChMflXXfg
Qt设计师制作记事本菜单
链接: https://pan.baidu.com/s/1CIFeyAGpZ5c4BgdjZD1E3Q 提取码: 0369
PyQt5的类存在与如下模块当中:
● QtCore
● QtGui
● QtWidgets
● QtMultimedia
● QtBluetooth
● QtNetwork
● QtPositioning
● Enginio
● QtWebSockets
● QtWebKit
● QtWebKitWidgets
● QtXml
● QtSvg
● QtSql
● QtTest
QtCore模块涵盖了包的核心的非GUI功能,此模块被用于处理程序中涉及到的 time、文件、目录、数据类型、文本流、链接、mime、线程或进程等对象。
QtGui模块涵盖多种基本图形功能的类; 包括但不限于:窗口集、事件处理、2D图形、基本的图像和界面 和字体文本。
QtWidgets模块包含了一整套UI元素组件,用于建立符合系统风格的classic界面,非常方便,可以在安装时选择是否使用此功能。
QtMultimedia模块包含了一套类库,该类库被用于处理多媒体事件,通过调用API接口访问摄像头、语音设备、收发消息(radio functionality)等。
QtBluetooth模块包含了处理蓝牙活动的类库,它的功能包括:扫描设备、连接、交互等行为(有没有感觉很高大上:))。
QtNetwork模块包含用于网络编程的类库,这组类程序通过提供便捷的TCP/IP 及 UDP 的 c/s 程式码集合,使得基于Qt的网络编程更容易。
QtPositioning模块用于获取位置信息,此模块允许使用多种方式达成定位,包括但不限于:卫星、无线网、文字信息。此应用一般用于网络地图定位系统。
Enginio模块用于构建客户端的应用程式库,用于在运行时访问 Qt Cloud 服务器托管的应用程序。
QtWebSockets模块包含了一组类程序,用以实现websocket协议。
QtWebKit包含了用于实现基于webkit2的网络浏览器的类库。
QtWebKitWidgets模块包含用于基于WebKit1的Web浏览器实现的类,用于基于QtWidgets的应用程序
QtXml模块包含了用于处理XML的类库,此模块为SAX和DOM API 的实现提供了方法。
QtSvg模块通过一组类,为显示矢量图形文件的内容提供了方法。
QtSql模块提供了数据库对象的接口以供使用
QtTest模块包含了可以通过单元测试,以调试PyQt5应用程式的功能。
from PyQt5.QtWidgets import QWidget,QApplication,QInputDialog,QMessageBox,QPushButton,QLabel
import sys
class example(QWidget):
def __init__(self):
super(example, self).__init__()
def initUI(self):
if __name__=="main":
app = QApplication(sys.argv)
sys.exit(app.exec_())
app = QApplication(sys.argv)
每个PyQt5应用程序必须创建一个应用程序对象。 sys.argv参数是来自命令行的参数列表
show()
show()方法在屏幕上显示窗口小部件。 一个小部件首先在内存中创建,然后在屏幕上显示。
qbtn.clicked.connect(QCoreApplication.instance().quit)
一个关闭按钮并实现关闭窗口的功能
self.bt1.setToolTip(‘点击这里猜数字’)
鼠标停留在按钮上就会出现提示
setFocus()就是让焦点置于文本栏中,方便用户输入
setGeometry()就是设置小部件的摆放坐标以及大小
QMessageBox.about就是弹出一个对话框
QMessageBox.question
QMessageBox.critical
QMessageBox.warning
QMessageBox.information
布局
hbox = QHBoxLayout() #水平布局
hbox.addStretch(1) #间隔比例,拉伸因子
hbox.addWidget(bt1) #增加小控件
hbox.addStretch(1)
hbox.addWidget(bt2)
hbox.addStretch(1)
hbox.addWidget(bt3)
hbox.addStretch(1)
vbox = QVBoxLayout() #竖直布局
vbox.addStretch(1)
vbox.addLayout(hbox)
vbox.addStretch(1)
self.setLayout(vbox) #放在底部
状态栏
获取状态栏,我们调用QtGui.QMainWindow类的statusBar()方法
showMessage()在状态栏上显示一条消息
self.statusBar().showMessage('准备就绪')
菜单栏
menuBar()方法创建一个菜单栏。 我们使用addMenu()创建文件菜单,并使用addAction()添加操作。
menubar = self.menuBar()
fileMenu = menubar.addMenu('文件(&F)')
fileMenu.addAction(exitAct)
上面的代码中我们在退出、文件后面都增加了“&”这个符号,增加这个符号后,当我们按住“Alt+F”的时候就能快速打开文件这个菜单,同理按住“Alt+E”的时候就能退出了。
QAction是使用菜单栏,工具栏或自定义键盘快捷方式执行操作的抽象。在上述三行中,我们创建一个具有特定图标和“退出”标签的动作。此外,为此操作定义了快捷方式。当我们将鼠标指针悬停在菜单项上时,第三行创建状态栏显示在状态栏中。
exitAct = QAction(QIcon('exit.png'), '退出(&E)', self)
exitAct.setShortcut('Ctrl+Q')
exitAct.setStatusTip('退出程序')
子菜单
使用QMenu创建新菜单,两个动作使用addAction()被添加到子菜单中
saveMenu = QMenu('保存方式(&S)', self)
saveAct = QAction(QIcon('save.png'),'保存...', self)
saveAct.setShortcut('Ctrl+S')
saveAct.setStatusTip('保存文件')
saveasAct = QAction(QIcon('saveas.png'),'另存为...(&O)', self)
saveasAct.setStatusTip('文件另存为')
saveMenu.addAction(saveAct)
saveMenu.addAction(saveasAct)
右键菜单
Windows操作系统中任何地方右击鼠标会出现俗称的“右键菜单”
def contextMenuEvent(self, event):
cmenu = QMenu(self)
newAct = cmenu.addAction("新建")
opnAct = cmenu.addAction("保存")
quitAct = cmenu.addAction("退出")
action = cmenu.exec_(self.mapToGlobal(event.pos()))
if action == quitAct:
qApp.quit()
工具栏
newAct = QAction(QIcon('new.png'),'新建(&N)',self)
newAct.setShortcut('Ctrl+N')
newAct.setStatusTip('新建文件')
toolbar = self.addToolBar('工具栏')
toolbar.addAction(newAct)
toolbar.addAction(exitAct)