PyQt5 从第一个程序开始
学习自:
链接: link.
链接: link.
第一段代码片
代码片
.
创建窗口,设置窗口大小,设置窗口名称等
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
from PyQt5 import QtWidgets, QtCore
if __name__ == "__main__":
# 这里引入了PyQt5.QtWidgets模块,这个模块包含了基本的组件。
# 每个PyQt5应用都必须创建一个应用对象。
# `sys.argv是一组命令行参数的列表。 `
# Python可以在shell里运行,这个参数提供对脚本控制的功能。
app = QtWidgets.QApplication(sys.argv)
# QWidge控件是一个用户界面的基本控件,它提供了基本的应用构造器。
widget = QtWidgets.QWidget()
widget.resize(320, 240)
widget.setWindowTitle("Hello PyQt5!!!")
widget.show()
# 这里,只有进入循环,才创建完成,否则一直显示未响应
sys.exit(app.exec_())
第二段代码片
代码片
.
设置提示框,添加button,
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import (QWidget, QToolTip,
QPushButton, QApplication)
from PyQt5.QtGui import QFont
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 这个静态方法设置了提示框(鼠标放上去有说明)的字体,我们使用了10px的SansSerif字体。
QToolTip.setFont(QFont('SansSerif', 10))
# 调用setTooltip()创建提示框可以使用富文本格式的内容。
# 给这个window的窗口设置的提示框
self.setToolTip('This is a <b>QWidget</b> widget')
# 创建一个可以按的按钮
btn = QPushButton('Button', self)
# 给按钮加上提示框
btn.setToolTip('This is a <b>QPushButton</b> widget')
# 重新定义按钮大小 为 btn.sizeHint() 那么大的按钮 这个大小是默认的为PyQt5.QtCore.Qsize(75,23)
btn.resize(btn.sizeHint())
btn.move(50, 50)
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('Tooltips')
self.show()
# 这里有一个问题,设置提示框的字体以及大小
# 是如何传入到窗体的提示框,以及button的提示框里面去的?
# 猜测可能是全局变量,当调用setToolTip时,调用QToolTip里面的内容
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
第三段代码片
代码片
.
设置按钮的功能,通过连接
import sys
from PyQt5.QtWidgets import QWidget, QPushButton, QApplication
from PyQt5.QtCore import QCoreApplication
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 创建一个button,父级组件是 QWidget
qbtn = QPushButton('Quit', self)
# 窗口建立连接,连接到 APP 实例的 退出功能
# 点击按钮之后,信号会被捕捉并给出既定的反映。QCoreApplication是事件的主循环
# 它能添加和删除所有的事件,instance()创建了一个它的实例。
# 点击事件和能终止进程并退出应用的quit函数绑定在了一起。
# 在发送者和接受者之间建立了通讯,发送者就是按钮,接受者就是应用对象.退出功能
qbtn.clicked.connect(QCoreApplication.instance().quit)
qbtn.resize(qbtn.sizeHint())
qbtn.move(50, 50)
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('Quit button')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
第四段代码片
代码片
.
当关闭时,弹出消息框,确认关闭与否
import sys
from PyQt5.QtWidgets import QWidget, QMessageBox, QApplication
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('Message box')
self.show()
def closeEvent(self, event):
# 这里closeEvent属于子类重写,当关闭时调用
# d当关闭QWidget时,会产生一个QCloseEvent,改变这个event默认的行为
# 弹出yes or no
# 设立一个消息盒子,提出问题,有两个选项 用或相连,后面是默认值
# 如果选yes,那么就接收,如果选no,则自动忽略
reply = QMessageBox.question(self, 'Message',
"Are you sure to quit?", QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
if reply == QMessageBox.Yes:
event.accept()
else:
event.ignore()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
第五段代码片
代码片
.
import sys
from PyQt5.QtWidgets import QWidget, QDesktopWidget, QApplication
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.resize(1000, 800)
self.center()
self.setWindowTitle('Center')
self.show()
def center(self):
# QDesktopWidget提供了用户的桌面信息,包括屏幕的大小,frame框架 Geometry几何位置
# 得到了主窗口的大小。
qr = self.frameGeometry()
# 这个就是调取桌面的几何位置的中心位置
# 获取显示器的分辨率,然后得到中间点的位置。
cp = QDesktopWidget().availableGeometry().center()
# 将窗口移动到桌面的中心
# 然后把自己窗口的中心点放置到qr的中心点。
qr.moveCenter(cp)
# 将窗口移动到电脑屏幕的左上角
# 这里如果不移动到左上角会发生什么呢?
# 之前不是已经将中心点与中心点对其了吗?
self.move(qr.topLeft())
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())