前言
之前一直在开发B/S架构的web应用,虽然web应用无需额外安装,但是browser客户端对客户端本机的硬件设备(摄像头、蓝牙设备、打印机、串口...)进行操作。
如果Python和JavaScript之间的函数可以相互调用就好了,Python+JavaScript融合起来的Client肯定会更加强大。
PyQt5概述
Gui:Graphical User Interface又称图形用户接口。也就是我们俗称的桌面应用。
Qt :一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架,支持Windows、Linux、MacOs。
PyQt5:使用Python对C++的Qt库的重新实现,由于最新Qt版本是5.11所以我们习惯称PyQt为PyQt5。
安装PyQt5
pip install PyQt5 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
安装pyqt5-tools
安装完pyqt5-tools之后就可以使用desinger了。desinger是一款图形化的UI组织工具。
pip install pyqt5-tools -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
desinger.exe路径
D:\Python3.6.1\Lib\site-packages\pyqt5_tools\Qt\bin\desinger.exe
配置desinger.exe
PyQt5程序的基本结构
0.导入相关模块
1.创建1个应用程序对象和1个Window窗口
2.开始在Windows中添加控件、设置控件展示样式、设置控件的信号和槽。
3.sys.exit(app.exec_()) 进入事件循环监听
from PyQt5.Qt import * import sys app=QApplication(sys.argv) #创建1个window window=QWidget() #设置这个window的标题 window.setWindowTitle("PyQt5初体验") #设置window的大小 window.resize(500,500) #设置把该window 放在桌面的位置 window.move(400,200) #在window中创建1个lable标签 label=QLabel(window) label.setText("Hello Martion") label.resize(100,200) label.move(200,200) #显示窗口 window.show() #进入消息循环模式 sys.exit(app.exec_())
控件是什么?
把不同的控件绘制在桌面上就是我们看到的桌面应用,控件接受和响应各种事件(鼠标、键盘)和用户进行交互。
控件就相当于前端的HTML标签,不同的标签有相同的属性也有自身独有的特性,是组织GUI界面的最小单位。
每个控件都是矩形的,他们按Z轴排序(叠加)显示
控件会被父控件和前面的控件剪切。
没有父控件的控件称之为窗口(windown/顶层控件)。
PyQt5的顶层和子控件
和HTML标签类似PyQt5中的控件也是有层级结构的。
顶层控件:作为1个窗口进行显示、做为容器承载其他控件。
子控件:在父级控件之内,作为父级控件的一部分。
from PyQt5.Qt import * import sys app=QApplication(sys.argv) #创建1个window顶层控件 window=QWidget() #设置这个window顶层控件的标题 window.setWindowTitle("我是父级控件") #设置window顶层控件的大小 window.resize(500,500) #设置把该window顶层控件放在桌面的位置 window.move(400,200) #在顶层控件中创建1个lable子级标签(继承window标签) label=QLabel(window) label.setText("我是子控件") #设置子标签的大小 label.resize(100,200) #设置把该lable标签放在顶层控件的位置 label.move(100,200) #显示顶层控件之后,子控件也跟随显示。 window.show() #进入消息循环模式 sys.exit(app.exec_())