pyqt5 简易入门教程

PyQt5:简易视频播放器 本文旨在介绍如何使用PyQt5制作简易的视频播放器 ps:有些网友也许会遇到只能播放avi格式视频,而mp4等格式无法播放的问题(DirectShowPlayerService::doRender: Unresolved error code 0x8040266 (IDisspatch error #102)),这需要下载一个解码器,可参考这篇博客。 Version 1:最简易播放器  直... 阅读详情

pyqt5 简易入门教程

1. 安装

pip install PyQt5 PyQt5-tools 

2. 创建主窗口

import sys
from PyQt5.QtWidgets import QWidget,QApplication 
# 创建应用程序
app = QApplication(sys.argv)

# 创建窗口
w = QWidget()

# 设置窗口标题,在窗口顶端左侧显示
w.setWindowTitle("First PyQt") # 设置窗口标题

# 设置窗口尺寸,两种方式,推荐方式1
w.setGeometry(100,100,1000,500) # 设置窗口尺寸,方法1,推荐(相对屏幕的起始x坐标,相对屏幕的起始y坐标,宽度,高度)
# w.resize(640,480) # 设置窗口尺寸,方法2(宽度,高度)

# 显示窗口
w.show()

# 循环执行app程序,直至app程序结束
sys.exit(app.exec())

说明: sys.exit(app.exec_()):

在 PyQt 或 PySide 应用程序中,sys.exit(app.exec_()) 是一个常见的语句,用于启动应用程序的事件循环并正确处理程序的退出。
具体来说:
app.exec_() 启动了 Qt 应用程序的事件循环,这是 GUI 应用程序的核心,负责处理用户交互、绘制界面等事件
将其作为参数传递给 sys.exit() 可以确保在事件循环结束时,程序能够正确地返回一个退出状态码给操作系统
在 Python 中,exec_() 末尾的下划线是因为 exec 是 Python 的关键字,所以 Qt 使用 exec_() 作为方法名

3. 添加组件–按钮

1. 创建按钮
2. 设置按钮名称,尺寸
3. 设置按钮的父窗口
4. 给按钮添加槽函数:on_btn_clicked()
import sys
from PyQt5.QtWidgets import QApplication,QWidget,QPushButton

def on_btn_clicked():
    print("button clicked")
    
# 创建app
app = QApplication(sys.argv)

# 创建并配置窗口
w = QWidget()                   # 创建窗口
w.setWindowTitle("First PyQt")  # 设置窗口标题
w.setGeometry(100,100,1000,500) # 设置窗口尺寸

######################################################################
# 添加按钮
## 创建按钮,设置按钮名称
btn = QPushButton("Button")

## 设置按钮的父窗口
btn.setParent(w) # 设置按钮的父亲是当前窗口,等于是添加到窗口中显示
## btn = QPushButton("name = Button",parent=w) # 创建按钮,设置按钮上的文字,指定按钮的父窗口,等价于以上两个命令

## 修改按钮名称
btn.setText("12346")              # 设置按钮上的文字,覆盖创建按钮时的命名
btn_txt = btn.text()              # 提取按钮上的文字

## 设置按钮的位置、尺寸
btn.setGeometry(10,10,200,20)       # 设置按钮尺寸,位置

## 给按钮添加槽函数
btn.clicked.connect(on_btn_clicked) # 槽函数需要在该命令之前定义

##########################################################################
# 展示窗口
w.show()
# 循环执行窗口命令
sys.exit(app.exec_())

4. 添加组件–label

import sys
from PyQt5.QtWidgets import QApplication,QWidget,QPushButton,QLabel

# 创建窗口
app = QApplication(sys.argv)
w = QWidget()
w.setWindowTitle("First PyQt") # 设置窗口标题
w.setGeometry(100,100,1000,500) # 设置窗口初始位置,尺寸

######################################################################
## 添加label ,创建之初指定父亲
label = QLabel("I am the created label:",w) # 创建label,设置label——name, label 的父窗口
label.setGeometry(10,10,200,20) # 设置label的位置与大小(x起始坐标,y起始坐标, x尺寸,y尺寸)
# 不设置尺寸时,尺寸自适应,默认位置是(0,0)
#####################################################################

# 展示窗口
w.show()
sys.exit(app.exec_()) # 程序进入循环等待状态

5. 添加组件–单行文本框

import sys
from PyQt5.QtWidgets import QApplication,QWidget,QPushButton,QLabel,QLineEdit

# 创建窗口
app = QApplication(sys.argv)
w = QWidget()
w.setWindowTitle("First PyQt") # 设置窗口标题
w.setGeometry(100,100,1000,500) # 设置窗口尺寸

## 添加label ,创建之初指定父亲
label = QLabel("Account:",w)
label.setGeometry(100,100,100,20) # 设置label的位置与大小(x起始坐标,y起始坐标, x尺寸,y尺寸)

######################################################################
## 添加文本框,添加文本框之初指定父亲
line_edit = QLineEdit(w)                  # 创建文本框的同时指定父窗口
line_edit.setPlaceholderText("请输入账号")  # 设置文本框中的显示文本。该文本不是正式文本,仅用于提示
line_edit.setGeometry(200,100,200,20)     # 设置单行文本框的位置、尺寸
# line_edit.setText("kkkkkkk")            # 设置单行文本框的初始文本,正式内容,可以被用户操作覆盖
text = line_edit.text()                   # 提取单行文本框中的文本
print("QLineEdit data = ",text)
###########################################################################

# 展示窗口
w.show()
sys.exit(app.exec_()) # 程序进入循环等待状态

如果要多个窗口组件联动,需要创建一个类,管理所有的组件,以及对应的成员变量。

6. 添加组件–创建文本编辑框

import sys
from PyQt5.QtWidgets import QApplication,QWidget,QPushButton,QLabel,QLineEdit,QTextEdit

# 创建窗口
app = QApplication(sys.argv)
w = QWidget()
w.setWindowTitle("文本框测试窗口")
w.resize(600,600)

#######################################################################
# 添加文本编辑框
txt_editor = QTextEdit("景甜来了",w)                 # 设置初始文本内容,设置父窗口,等价于下面的两行
# txt_editor = QTextEdit("景甜来了")                 # 设置初始文本内容
# txt_editor.setParent(w)                             # 设置父窗口
# txt_editor.move(100,100)                            # 设置文本框的初始位置,宽度,高度采用默认设置
txt_editor.setGeometry(10,10,300,300)
# txt_editor.setStyleSheet("background-color:cyan;")  # 设置文本框的背景颜色
txt_editor.setPlainText("hello, 你好")             # 设置/覆盖文本框的文本内容
txt_editor.append("lllllll")                        # 追加文本
text_data = txt_editor.toPlainText()                # 提取文本框中的文本数据
print(text_data)
###########################################################################

w.show()
sys.exit(app.exec_())

7. 添加组件–列表单选

import sys 
from PyQt5.QtWidgets import QApplication,QMainWindow,QWidget
from PyQt5.QtWidgets import QVBoxLayout,QHBoxLayout
from PyQt5.QtWidgets import QGroupBox,QLabel 
from PyQt5.QtWidgets import QPushButton, QRadioButton,QListWidget,QComboBox,QMessageBox 

from PyQt5.QtCore import Qt 
from PyQt5.QtGui import QFont 

#### 定义一个字体
font = QFont()         # 设置字体
font.setPointSize(16)
font.setBold(True)

font_simhei = QFont("SimHei",10)
font_simhei_bold = QFont("SimHei",10,QFont.Bold)

# 创建应用
app = QApplication(sys.argv)
w = QWidget()
w.setWindowTitle("测试单选选项")
w.setGeometry(100,100,600,400)

##########################################################
# 添加组合
radio_layout = QVBoxLayout(w)
radio_layout.setContentsMargins(20,20,20,20)

# 添加label 
label = QLabel("单选列表")
radio_layout.addWidget(label)

# 添加选项
radio1 = QRadioButton("选项A")
radio1.setChecked(True)
radio_layout.addWidget(radio1)

radio2 = QRadioButton("选项B")
radio_layout.addWidget(radio2)

radio3 = QRadioButton("选项C")
radio_layout.addWidget(radio3)

radio4 = QRadioButton("选项D")
radio_layout.addWidget(radio4)

# 打印选择

radio4_selected = radio4.isChecked()
radio4_txt = radio4.text()
print(f"radio4_name = {radio4_txt},is_checked = {radio4_selected}")
###########################################################################

# 显示窗口
w.show()
sys.exit(app.exec_())

8. 添加组件–文件浏览框

import sys 
from PyQt5.QtWidgets import QApplication,QMainWindow,QWidget,QVBoxLayout
from PyQt5.QtWidgets import QHBoxLayout,QPushButton,QLineEdit,QLabel,QFileDialog 
from PyQt5.QtCore import Qt 

app = QApplication(sys.argv)
w = QWidget()
w.setWindowTitle("文件浏览框")
w.setGeometry(100,100,500,300)

###############################################
def on_btn_browse_file():
    """打开文件选择对话框"""
    ## 获取选中的文件路径
    # QFileDialog.getOpenFileName() 返回一个数组:(文件路径,文件过滤器)
    file_path,_ = QFileDialog.getOpenFileName(
        w,       # 父窗口
        "选择文件",  # 对话框标题
        "",         # 初始目录,默认为当前目录
        "所有文件(*);;文本文件(*.txt);;python 文件(*.py)") # 文件过滤器
    # 如果选择了文件,更新文本框
    print(f"选择的文件是:{file_path}")

# 添加按钮,用于弹出对话框,选择文件,需要添加响应函数
btn = QPushButton("浏览...",parent=w)
btn.move(100,100)       # 移动位置
btn.clicked.connect(on_btn_browse_file)
######################################################
w.show()
sys.exit(app.exec_())

9. 添加组件–文件夹浏览框

import sys 
from PyQt5.QtWidgets import QApplication,QMainWindow,QWidget,QVBoxLayout
from PyQt5.QtWidgets import QHBoxLayout,QPushButton,QLineEdit,QLabel,QFileDialog 
from PyQt5.QtCore import Qt 

app = QApplication(sys.argv)
w = QWidget()
w.setWindowTitle("文件浏览框")
w.setGeometry(100,100,500,300)

###############################################
def on_btn_browse_folder():
    """打开文件夹选择对话框"""
    folder_path = QFileDialog.getExistingDirectory(parent=w,caption="选择文件夹",directory="")
    print(f"选择的文件夹路径是:{folder_path}")

# 添加按钮,用于弹出对话框,选择文件,需要添加响应函数
btn = QPushButton("浏览...",parent=w)
btn.move(100,100)       # 移动位置
btn.clicked.connect(on_btn_browse_folder)
######################################################
w.show()
sys.exit(app.exec_())

10. 添加组件–添加group

主窗口添加 group, 将group设置为某个布局(layout),布局(layout)添加组件

import sys 
from PyQt5.QtWidgets import QApplication,QMainWindow,QWidget
from PyQt5.QtWidgets import QVBoxLayout,QHBoxLayout
from PyQt5.QtWidgets import QGroupBox,QLabel 
from PyQt5.QtWidgets import QPushButton, QRadioButton,QListWidget,QComboBox,QMessageBox 

from PyQt5.QtCore import Qt 
from PyQt5.QtGui import QFont 

"""
说明: 主窗口添加group,创建layout,将group设置为layout,布局添加组件

备注: group 只能设置为某个 layout, 不能自己添加组件
    widget, layout 可以添加组件

"""
app = QApplication(sys.argv)
# 创建窗口
window = QMainWindow()
window.setGeometry(100,100,500,600)
window.setWindowTitle("选项选择示例")

# 添加主组件,后续所有组件的父亲组件都必须是这个组件
w = QWidget()
window.setCentralWidget(w)

# 添加group
group = QGroupBox(title="单选按钮列表",parent=w)
group.move(10,10) # 设置group在窗口中的起始位置

# group 添加布局(用set):便于调整格式
layout = QVBoxLayout()
# layout = QHBoxLayout()
group.setLayout(layout)

## 设置 layout 的间隔
layout.setSpacing(10) # 设置组员的排列间隔 

# layout添加成员
radio1 = QRadioButton("选项A")
radio2 = QRadioButton("选项B")
radio3 = QRadioButton("选项C")
radio4 = QRadioButton("选项D")
layout.addWidget(radio1)
layout.addWidget(radio2)
layout.addWidget(radio3)
layout.addWidget(radio4)

# 显示窗口
window.show()
sys.exit(app.exec_())

11. 添加组件–添加icon/显示图片

from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtGui import QIcon

app = QApplication([])
window = QMainWindow()
window.setWindowTitle("测试加载icon")
window.setGeometry(100,100,500,500)

# 创建QIcon对象并设置为窗口图标
icon = QIcon("./pyqt_tests/a_icon.png")
window.setWindowIcon(icon)

window.show()
app.exec_()

12. 添加menu

# -*- coding:utf-8 -*-
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

# 槽函数
def processTrigger(q):
    if q.text() == "copy":
        print("hello, i am copy")
    print(q.text() + " is triggered")
    
## 创建窗口
app = QApplication(sys.argv)
win = QMainWindow()
win.setWindowTitle("main_window")
win.setGeometry(100,100,400,400)

## 获取 bar 对象 添加menu
bar = win.menuBar()

## 给bar添加menu,命名为File
file = bar.addMenu("File")
file.addAction("New")  # 给 menu 添加子动作:New,new是最后一层menu的名字
file.addAction("Save") # 给 menu 添加子动作:Save,save 是最后一层menu的名字

# 给 menu 添加子 menu:edit
submenu_edit = file.addMenu("edit")
# 给子menu添加动作 "copy"
submenu_edit.addAction("copy")
# 给子menu添加动作 "paste"
submenu_edit.addAction("paste")


## 添加响应函数
file.triggered[QAction].connect(processTrigger) 

win.show()
sys.exit(app.exec_())

PyQt5:适用于新手的入门级保姆教程 PyQt基于QT库的python封装,是一个图形用户界面(GUI)工具包,允许用户使用python语言创建桌面应用程序。目前,不同版本中,PyQt5是较为流行的版本,支持python 2.7 和 python 3.x。PyQt支持两种开发方式,可视化和编程化。- 编程式创建界面无需多说,pip安装成功以后,有较深基础功底的可直接上手编码。- 可视化方式对新手非常友好,用户可基于Qt Designe工具包进行组件拖拽、布局管理等操作。 阅读详情

相关推荐

PyQt5入门:一篇就够

和QWidget,这两个类都在模块中,所以首先要导入这个模块。

generalfuck的博客 5309

PyQt6新手教程(七万字)

PyQt是Python编程语言的一个GUI(图形用户界面)工具包,它允许开发人员使用Python语言创建桌面应用程序。PyQt是基于Qt库的Python封装,Qt是一个流行的C++框架,用于开发跨平台的应用程序。

📷 图像处理践行者 | 传统算法 · 深度学习 · 多模态 | 分享实战经验与技术洞见,探索从像素到智能的无限可能。 5万+

使用PyQt5的图形用户界面(GUI)开发教程

本文是使用 PyQt5 进行图形用户界面(GUI)开发的教程。作者因 MATLAB 设计 GUI 存在移植性、风格化和可读性差的问题,选择用 Python 的 PyQt5 开发。教程先介绍 PyQt5 安装,包括用 Conda 管理环境、安装 PyQt5 和 Qt Designer,以及在 VsCode 中配置;接着说明 UI 设计,如 .ui、.qrc 文件设计和 qss 样式设计;最后阐述逻辑设计,以卡尔曼滤波追踪导弹为例,涵盖主窗口初始化、界面设置、事件绑定、标志位管理、数据读取、公式显示、图标设置和

Ruins_LEE的博客 4491

PyQt5保姆级入门教程——从安装到使用

今天看了多个大佬的教程,总算是把PyQt5开发弄好了,每个部分都要看几个人的十分不方便,我十分想要总结一下,所以在这里,你无需看其他的教程,从这就能完成它的安装到快速上手。后续的功能添加,我准备放在我的项目设计当中来写,希望这个教程能够给你带来帮助,不劳我辛苦一场(手动滑稽,呵呵)。

m0_62919535的博客 15万+

PyQt5和Qt designer做简易计算器

写在前面 初学PyQt5, 参考一篇博客做了一个简易计算器。 原博客传送门:用PyQt5开发一个简易的计算器 1.Qt designer设计界面 我用的是Eric6 里面的带的Qt designer,首先设计计算器的界面,记得将各个PushButton之类的重新命名,如下图: 先在Qt designer里面设计好界面后保存,然后编译将.ui文件转化出一份.py文件。(右键点击.ui文件第一项co...

qq_41241926的博客 1万+

在不同版本Python中安装PyQT5及PyQT5-Tools

在不同版本Python中安装PyQT5及PyQT5-Tools

zoomgu680的博客 2万+

pythonqt5教程从零开始_pyQt5 & QtDesigner 简易入门教程

python3.6 & pyQt5 & QtDesigner 简易入门教程1. python 官网下载安装python3.6并配置好环境;2.cmd下 运行:pip install PyQt5 安装PyQt库;3.cmd下运行:pip3.6 install PyQt5-tools 安装QtDesignerQtDesigner一般默认被安装到Python36\Lib\site-p...

weixin_33142729的博客 3026

PyQt完整入门教程

1、GUI开发框架简介 19年来,一直在做Android ROM相关测试,也有了一定的积累;20年,计划把之前完整的测试方案、脚本、工具进行整合复用。 第一期计划是开发一个GUI的测试工具,近期也进行了相关调研。 1.1 通用开发框架 electorn:基于node-js,跨平台,开发成本低,运行效率低 qt:基于C++,跨平台,效率高,开发成本高 javafx:基于java,主要用于跨...

q0773161zilia的博客 2148

python3.6 & pyQt5 & QtDesigner 简易入门教程

''' python3.6 & pyQt5 & QtDesigner 简易入门教程      1. python 官网下载安装python3.6并配置好环境; 2.cmd下 运行: pip install PyQt5   安装PyQt库; 3.cmd下运行: pip3.6 install PyQt5-tools 安装QtDesigner   QtDesigner一般...

MAILLIBIN的专栏 4183

PyQt5简易入门指南02,简单图片显示程序

一个简单的例子以下是一个用pyqt5写成的简单图片显示程序。 该图片显示程序由一个QLabel和QPushButton组成,当单击按钮时,会弹出一个文件选择对话框,让用户选择合适的图片文件。在用户按下确定后程序会将用户所选择的图片进行显示。 启动脚本main.py依然作为这个程序的启动脚本。import sys from PyQt5.QtWidgets import QApplication

linuxlike的博客 3万+

PyQt5+Python3.6.5实现简易安卓Apk装包器

PyQt5+Python3.6.5实现简易安卓Apk装包器导读一、准备工作二、设计装包器安装界面三、程序运行效果四、小结 导读 人生第一篇博客,之前从来都是找别人分享的博客,现在和大家分享自己尝试做了个简易的AndroidApk装包器,虽然不是很完善,但是还是实现了基本功能的,希望能有大佬指出不足指出,共同探讨技术。 一、准备工作 配置Python的开发环境:Python3.6.5 + pych...

weixin_38273714的博客 1万+

PyQt5(designer)入门教程

PyQt5入门教程 注:这是当时闲着无聊写到github page的,在优快云上也看了大佬们各种各样的教程跟疑难杂症解答,感觉我这个不放出来也有点可惜,希望各位能够从中收益吧。 在网上看了不少关于PyQt5的中文教程,但是无外乎是过时了,讲解不清晰易懂,或者资料不完整。Youtube上面倒是有不少视频,但是不少Youtuber居然还在手写ui而不是利用方便快捷的Qt Designer。仅有的几个...

AzureMouse的博客 26万+

PyQt5入门教程和简单使用

要在 PyCharm 中运行并显示你通过 Qt Designer 设计的 UI 界面,你需要编写一个主程序来加载和使用生成的。Qt Designer 是一个可视化工具,可以通过拖拽控件的方式设计界面,生成。文件转换为 Python 文件,提升性能并减少依赖。如果你不想生成 Python 代码,可以直接加载。:PyQt5 的应用类,用于管理应用的生命周期。文件转换为 Python 代码,可以添加。在 Qt Designer 中,选择。如果你想为按钮添加点击事件,可以在。运行程序后,点击按钮会在控制台输出。

smx6666668的博客 1224

PyQt5入门教程

在有Qt Designer的情况下,是完全不推荐费时费力去手写GUI代码的。Qt中有“信号和槽(signal and slot)”这个概念,不过目前无需深究,也无需在Designer中去设置对应按钮的“信号和槽”,直接在“main.py”中“MainWindow.show()”的后面加入下面这样的一行代码。在左侧的“Widget Box”栏目中找到“Display Widgets”分类,将“Label”拖拽到屏幕中间的“MainWindow”画布上,你就获得了一个仅用于显示文字的文本框,如下图所示。

叶仙的博客 5739

PyQt5 - QWidgets部件入门教程

废话 主程序视窗 相关类 案例 创建一个视窗 子部件 使用布局 嵌套布局 设置Model 相关类 相关方法废话窗口部件是用Qt创建GUI的基础模块,每个GUI组件(例如按钮、标签、文本编辑器)都是在用户界面窗口内某处放置的一个窗口部件,或作为独立窗口显示。每个部件类型都由QWidget子类提供(QWidget是QObject子类)。QWidget不是一个抽象类,它可以作为其他窗口部件的容器使用,也可

5170

小白白也能学会的 PyQt 教程 —— 实战简易计算器

希望本文对初学者能够提供一个入门PyQt5编程的起点,并为大家进一步探索和应用PyQt5提供帮助。通过深入学习和实践,您可以利用PyQt5创建出丰富、交互性强的桌面应用程序,提升自己的编程能力。

繁依Fanyi的博客 827

Python 利用PyQt5写一个简易的串口助手

学习单片机,STM32好长时间了,也做了一些项目,一直想利用上位机实现电脑与单片机之间的传输数据,利用串口助手是最直接的通信方式,但串口助手不适合做上位机,如果会写串口助手的软件,基本能写自己写一个上位机,历时一个月,终于写出一个简易的串口助手,笔者自己写的软件,有些Bug,分享出来,仅供参考,欢迎大家一起学习与讨论。 目标:利用Python语言写一个简易的串口助手 ...

scx2006114的博客 1万+

大模型推理常见采样策略:Top-k, Top-p, Temperature, Beam Search

大模型推理采样策略,举例通俗易懂汇总介绍

qq_43243579的博客 2万+
上一篇: ray.rllib-入门实践-12-2:在自定义policy中注册使用自定义model(给自定义model新增参数)
下一篇: vscode 配置使用pyqt5
wzg2016
博客等级 码龄10年 539粉丝 493原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值