0. 本文学习地址
1. PyQt5是由一系列Python模块组成
超过620个类,6000函数和方法。能在诸如Unix、Windows和Mac OS等主流操作系统上运行。
1.1 PyQt5有两种证书
- GPL
- 商业证书
2. 实验1 实现简单的窗体
2.1 完整代码
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
ZetCode PyQt5 tutorial
In this example, we create a simple
window in PyQt5.
author: Jan Bodnar
website: zetcode.com
Last edited: August 2017
"""
import sys
from PyQt5.QtWidgets import QApplication, QWidget # 这里引入了PyQt5.QtWidgets模块,这个模块包含了基本的组件。
if __name__ == '__main__':
app = QApplication(sys.argv) # 每个PyQt5应用都必须创建一个应用对象。sys.argv是一组命令行参数的列表。Python可以在shell里运行,这个参数提供对脚本控制的功能。
w = QWidget() # QWidge控件是一个用户界面的基本控件,它提供了基本的应用构造器。默认情况下,构造器是没有父级的,没有父级的构造器被称为窗口(window)
w.resize(250, 150)
w.move(300, 300) # 表示从左上角开始的长,表示高
w.setWindowTitle('Simple')
w.show() # show()能让控件在桌面上显示出来。控件在内存里创建,之后才能在显示器上显示出来。
sys.exit(app.exec_())
2.2 关键点解释
在show函数执行后
,我们进入了应用的主循环
中
- 事件处理器这个时候开始工作。
- 主循环从窗口上接收事件,并把事件派发到应用控件里。
- 当调用
exit()方法或直接销毁主控件
时,主循环就会结束。 - sys.exit()方法能确保主循环安全退出。
- 外部环境会收到主控件如何结束的信息。
sys.exit(app.exec_())
exec_()之所以有个下划线,是因为exec是一个Python的关键字。
2.3 关于屏幕的长和宽
是以像素px为单位来表示的
3. 实验2 实现带窗口图标的窗体
3.1 完整代码
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
ZetCode PyQt5 tutorial
This example shows an icon
in the titlebar of the window.
Author: Jan Bodnar
Website: zetcode.com
Last edited: August 2017
"""
import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QIcon
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 创建GUI页面
self.setGeometry(300, 300, 300, 220)
self.setWindowTitle('Icon')
self.setWindowIcon(QIcon('web.png'))
self.show()
# 你想要运行程序,起码写一个入口啊
if __name__ == '__main__':
# 1.实例化应用程序对象
app = QApplication(sys.argv)
# 2.实例widget对象
ex = Example()
# 3.退出工具
sys.exit(app.exec_())
# if __name__ == '__main__':
#
# app = QApplication(sys.argv) # 创建应用对象
# ex = Example() # 创建实例对象
# sys.exit(app.exec_())
4. 实验3
4.1 完整代码
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
ZetCode PyQt5 tutorial
This example shows a tooltip on
a window and a button.
Author: Jan Bodnar
Website: zetcode.com
Last edited: August 2017
"""
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):
QToolTip.setFont(QFont('SansSerif', 10))
self.setToolTip('This is a <b>QWidget</b> widget')
# 这里的内容是button进行设置
btn = QPushButton('Button', self)
btn.setToolTip('This is a <b>QPushButton</b> widget')
btn.resize(btn.sizeHint())
btn.move(50, 50)
# 这是对窗体进行设置
self.setGeometry(300, 300, 300, 200) # 这条语句相当于resize()和move()两条语句
self.setWindowTitle('Tooltips') # 设置好窗口的标题
self.show()
# 我来写一个程序运行入口
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
#
# if __name__ == '__main__':
#
# app = QApplication(sys.argv) # 每个PyQt5应用都必须创建一个应用对象
# ex = Example() # 实例化类对象
# sys.exit(app.exec_()) # 确保主循环结束后正常结束窗体程序
5. PyCharm编程小技巧
5.1 在编写
的时候,直接输入main即可得到完整代码
- 编译器会自动生成该内容
5.2 快速输入代码小技巧
- 按
tab键
是代码补全的功能 - 按
enter键
是插入的功能,在cursor
的地方插入东西