PyQt5 初识
环境
Mac 10.13
Python 3.6,
brew install python
, Eric6 最新的中文版是 17.12, 而 17.12 只支持到 python 3.6Qt Creator 5.11, 使用 Online 安装, 离线安装会找不到 Qt Designer
SIP,
pip3 install PyQt5-sip
, Python 调用 C/C++ 库的必备模块QScintilla,
pip3 install QScintilla
, Scintillar 源代码编辑控件的 Qt 接口PyQt5,
pip3 install PyQt5
python3 install.py
Interface -> Interface, Language 选择中文, 重启生效
配置 Eric6
setting -> Preferences
Qt Tools
用来支持编辑 Qt UI 文件.
PyQt Docs
以前通过 pip 安装 PyQt 后, 帮助文档会被离线下载到本地, 新版本好像已经没有这种操作了, 只能在线:
http://pyqt.sourceforge.net/Docs/PyQt5/modules.html
代码提示
自动完成
等宽字体
语法高亮
主要模块
模块 | 功能 |
QtCore | 核心的非GUI的功能. 主要和时间、文件与文件夹、各种数据、流、URLs、mime类文件、进程与线程一起使用. |
QtGui | 窗口系统、事件处理、2D图像、基本绘画、字体和文字的模块. |
QtWidgets | 一系列创建桌面应用的UI元素. |
QtMultimedia | 处理多媒体的内容和调用摄像头API的模块. |
QtBluetooth | 查找和连接蓝牙的模块. |
QtNetwork | 网络编程的模块, 这些工具能让TCP / IP和UDP开发变得更加方便和可靠. |
QtPositioning | 定位的模块, 可以使用卫星、WiFi甚至文本. |
QtWebSockets | WebSocket协议的模块. |
QtWebKit | 一个基WebKit2的web浏览器. |
QtWebKitWidgets | 基于QtWidgets的WebKit1的模块. |
QtXml | 处理xml的模块, 提供了SAX和DOM API的模块. |
QtSvg | 显示SVG内容的模块, Scalable Vector Graphics(SVG) 是一种是一种基于可扩展标记语言(XML), 用于描述二维矢量图形的图形格式. |
QtSql | 处理数据库的模块. |
QtTest | 测试PyQt5应用. |
Hello World
新建项目
配置项目属性
新建 UI (切换到下图序号 1 的标签, 在下面空白区右键, 选择新建窗体)
点击保存后, eric6 上出现了 first_window.ui
文件, 并且自动打开了 Qt 设计师
.
这个 first_window.ui
文件是 Qt 专用的, python 不认识它, 但是最终我们是通过 python 来运行程序, 所以需要把 *.ui
文件转化成 python 识别的格式, 方法很简单, 在 *.ui
文件上右键选择 编译窗体
(编译成功/失败会弹框提示).
切换回下图序号 1 的标签, 可以看到多了一个 Ui_first_window.py
文件 (以 Ui 开头, 标明这是从 Qt 的 Ui 文件转换来的)
这个文件有自测代码, 在 Eric 上按 F5 或者点击下图中的图标, 就能打开刚才新建的窗体了.
虽然 Ui_first_window.py
能够被直接运行, 但它本质还是个 ui 层面的文件 (从它的命名就可以看出), 不应该被直接运行, 而从 OOA/D 的角度说, 它是属于 view 层, eric 提供了快捷的方法从 Ui_xxx.py
文件生成 controller 层的代码, 所有的在界面上的事件处理都在这层完成.
首先切换到下图序号 1 的标签, 在 first_window.ui
上右键, 选择 "生成对话框代码"
切换到下图序号 1 的标签, 可以看到又多了个文件
这个文件要做些修改.
去掉一个多余的点,将
变成
添加测试代码:
然后就可以按 F5 或者 点击工具栏上的图标, 就能打开刚才新建的窗体了.
Last updated