当前位置:网站首页>PyQt5:入门使用教程
PyQt5:入门使用教程
2022-08-09 22:04:00 【pomelo33】
所需环境
- Windows / linux
- python3
- PyQt
安装PyQt5
下面直接使用pip来安装PyQt5,此处可能是pip/pip3,或者两者皆可,后面不再重复
直接pip安装PyQt5
pip install PyQt5由于Qt Designer已经在Python3.5版本从PyQt5转移到了tools,因此我们还需要安装pyqt5-tools
pip install pyqt5-tools到这一步,PyQt5就安装完成了,你可以通过下面若干可选的操作来检查是否已经安装成功:
正在上传…重新上传取消
- Win+S呼出主面板,输入designer,如果看到跟下图类似的结果说明PyQt Designer已经被安装
- 在cmd中输入pyuic5,如果返回“Error: one input ui-file must be specified”说明安装成功。
使用PyQt5
新建项目
Win+S呼出主面板,输入designer,点击打开。
正在上传…重新上传取消
会弹出以上窗口,可以打开之前编辑过的.ui文件,也可以点击创建一个Main Window。创建好后可以看到如下所示画面
正在上传…重新上传取消
- 左侧的“Widget Box”就是各种可以自由拖动的组件
- 中间的“MainWindow - untitled”窗体就是画布
- 右上方的"对象查看器"可以查看当前ui的结构
- 右侧中部的"属性编辑器"可以设置当前选中组件的属性
- 右下方的"资源浏览器"可以添加各种素材,比如图片,背景等等,目前可以不管
添加组件
可以通过拖动左侧的工具到当前画布上,例如我这里选择了几个Push Button以及一个textBrowser。
设计好基本的布局之后,点击左上角文件->另存为,可以生成.ui的文件。建议可以保存到后续需要调用代码的文件夹里。
生成.py文件
cd到.ui文件所在的文件夹,打开cmd,输入以下指令生成如下所示.py文件。
pyuic5 -o name.py name.ui运行.py文件
生成的py文件是无法直接运行的,我们可以在我们的main文件中写入以下代码,当运行main文件时,我们设计好的ui就会被展示出来。
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
import gui_file_name
if __name__ == '__main__':
app = QApplication(sys.argv)
MainWindow = QMainWindow()
ui = gui_file_name.Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_()配置组件接口
ui展示出来了,但上面的按钮按动后都还是没有反应的。因此现在需要配置一下,设置按钮触发后的动作。
我们需要先在头文件中导入partial
from functools import partialpartial的用法如下所示:
partial(function, arg1, arg2, ......)在MainWindow.show()后面增加以下代码:
ui.pushButton.clicked.connect(partial(process, arg1, arg2))其中process是为你希望这个按钮调用的函数,arg1、arg2为函数传入的形参。
再次运行main.py,点击按钮,对应的函数就会执行。这时如果想将打印到控制台的输出显示到添加到textBrowser中,可以添加以下函数:
def print_qt(mes):
ui.textBrowser.append(mes) # 在指定的区域显示提示信息
ui.cursot = ui.textBrowser.textCursor()
ui.textBrowser.moveCursor(ui.cursot.End)
QApplication.processEvents()替换函数中的print即可。效果展示:
至此,PyQt5大致的操作已经展示完毕。当然其中还包含有很多组件,具体使用方式可以查阅官方文档:QtGui Module | Qt 4.8
边栏推荐
- R语言使用mean函数计算样本(观测)数据中指定变量的相对频数:计算时间序列数据中大于前一个观测值的观测值所占的比例总体的比例
- 【LaTex】 Font “FandolSong-Regular“ does not contain requested(fontspec)Script “CJK“.如何抑制此种警告?
- Vmware中安装win7虚拟机以及相关简单知识
- 深度剖析 Apache EventMesh 云原生分布式事件驱动架构
- D. Binary String To Subsequences
- 关于ETL的两种架构(ETL架构和ELT架构)
- MLOps的演进历程
- Rust dereference
- Tencent continues to wield the "big knife" to reduce costs and increase efficiency, and free catering benefits for outsourced employees have been cut
- leetcode:331. 验证二叉树的前序序列化
猜你喜欢

Qt 消息机制和事件

Kubernetes Service对象

【技术分享】SLA(服务等级协议)原理与配置

typedef和#define的花里胡哨的用法

Tencent continues to wield the "big knife" to reduce costs and increase efficiency, and free catering benefits for outsourced employees have been cut

17-GuliMall 搭建虚拟域名访问环境

JSON 基本使用

Core Data浅谈系列之五 : 在UITableView中展示

【微服务~Nacos】Nacos服务提供者和服务消费者

TRUNCATE表之后空间未释放
随机推荐
leetcode 38. 外观数列
Rust dereference
R语言使用mean函数计算样本(观测)数据中指定变量的相对频数:计算时间序列数据中大于前一个观测值的观测值所占的比例总体的比例
迅为瑞芯微RK3399开发板设置Buildroot文件系统测试MYSQL允许远程访问
台风生成,广州公交站场积极开展台风防御安全隐患排查
mysql 找不到或无法加载已注册的 .Net Framework Data Provider。
一本通2074:【21CSPJ普及组】分糖果(candy)
&&、||、&、|
Evolution of MLOps
Qt 消息机制和事件
leetcode:331. 验证二叉树的前序序列化
18-GuliMall 压力测试与性能监控
聊天尬死名场面,你遇到过吗?教你一键获取斗图表情包,晋升聊天达人
Analyze the Add() method in Fragment management from the source code
CGLIB源码易懂解析
【TS技术课堂】时间序列预测
电脑系统重装后怎么用打印机扫描出文件?
How do task flow executors work?
nvm下node安装;node环境变量配置
【技术分享】SLA(服务等级协议)原理与配置