当前位置: 首页 > web >正文

PySide6 GUI 学习笔记——常用类及控件使用方法(地址类QUrl)

文章目录

  • 地址类QUrl
    • 主要功能
    • URL 格式介绍
    • 常见 scheme(协议)类型
    • QUrl 类常用方法
    • 常用方法示例
    • 典型应用场景

地址类QUrl

QUrl 是 PySide6.QtCore 模块中的一个类,用于处理和操作 URL(统一资源定位符)。它可以解析、构建、修改和验证 URL 字符串,广泛应用于网络编程和需要处理地址的场景。

主要功能

  • 解析和构建 URL:可以从字符串创建 QUrl 对象,也可以将 QUrl 对象转换为字符串。
  • 分解和修改 URL 各部分:如 scheme(协议)、host(主机)、port(端口)、path(路径)、query(查询参数)、fragment(片段)等。
  • 编码与解码:自动处理 URL 编码和解码,保证特殊字符的正确传递。
  • 验证 URL:可以判断 URL 是否有效(isValid)、是否为本地文件(isLocalFile)等。

URL 格式介绍

QUrl格式

URL(统一资源定位符)通常由以下几个部分组成:

  • scheme(协议):指定访问资源所用的协议,如 http、https、ftp、file 等。
  • user(用户名)password(密码):可选,部分协议支持在 URL 中包含用户名和密码。
  • host(主机):资源所在的服务器地址,可以是域名或 IP 地址。
  • port(端口):可选,指定服务器的端口号,若省略则使用协议的默认端口。
  • path(路径):资源在服务器上的具体位置。
  • query(查询参数):可选,提供额外的参数信息,格式为 key=value。
  • fragment(片段):可选,指向资源内部的某个位置,常用于网页锚点。

一个典型的 URL 格式如下:

scheme://user:password@host:port/path?query#fragment

例如:

https://user:pass@example.com:8080/path/page.html?query=123#section
部分示例值说明
schemehttps协议
useruser用户名(可选)
passwordpass密码(可选)
hostexample.com主机
port8080端口(可选)
path/path/page.html路径
queryquery=123查询参数(可选)
fragmentsection片段(可选)

常见 scheme(协议)类型

scheme说明
http超文本传输协议
https安全超文本传输协议
ftp文件传输协议
file本地文件
wsWebSocket
wss安全 WebSocket
mailto电子邮件地址
data内嵌数据
smbWindows 共享文件协议
nfs网络文件系统
ssh安全 Shell 协议
telnet终端网络传输协议
imap电子邮件 IMAP 协议
pop3邮件 POP3 协议
tel电子电话号码
javascriptJavaScript 脚本
vnc虚拟桌面协议
rtsp实时传输流协议
rtmp实时传输媒体协议
rmi远程方法调用协议
ircInternet 聊天协议
gopher互联网文件传输协议
nntp网络新闻传输协议
nc网络控制协议
sshs安全 Shell 协议
sftp安全文件传输协议
rlogin远程登录协议
rsync远程同步协议
rsh远程 shell 协议
ssh2安全 Shell 协议
MMS多媒体分享协议
ed2keDonkey 电驴网络传输协议
thunder迅雷网络传输协议
FlashgetFlashGet 网络传输协议

不同的 scheme 决定了 URL 的用途和访问方式,QUrl 支持多种协议,具体可参考官方文档。

QUrl 类常用方法

  • QUrl():构造一个空的 QUrl 对象。
  • QUrl(string):通过字符串创建 QUrl 对象。
  • isValid():判断 URL 是否有效。
  • isEmpty():判断 URL 是否为空。
  • isLocalFile():判断是否为本地文件路径。
  • scheme():获取协议部分(如 http、https)。
  • setScheme(scheme):设置协议部分。
  • host():获取主机名。
  • setHost(host):设置主机名。
  • port():获取端口号。
  • setPort(port):设置端口号。
  • userName():获取用户名。
  • setUserName(name):设置用户名。
  • password():获取密码。
  • setPassword(password):设置密码。
  • path():获取路径部分。
  • setPath(path):设置路径部分。
  • query():获取查询参数字符串。
  • setQuery(query):设置查询参数字符串。
  • fragment():获取片段(锚点)。
  • setFragment(fragment):设置片段。
  • toString():将 QUrl 对象转换为字符串。
  • fromLocalFile(path):通过本地文件路径创建 QUrl 对象。
  • toLocalFile():将 QUrl 转换为本地文件路径。
  • resolved(relative):合并相对路径,返回新的 QUrl。

常用方法示例

from PySide6.QtCore import QUrl# 创建 QUrl 对象
url = QUrl("https://www.example.com:8080/path/page.html?query=123#section")# 获取各部分
print(url.scheme())    # https
print(url.host())      # www.example.com
print(url.port())      # 8080
print(url.path())      # /path/page.html
print(url.query())     # query=123
print(url.fragment())  # section# 修改 URL
url.setHost("www.qt.io")
print(url.toString())  # https://www.qt.io:8080/path/page.html?query=123#section# 检查有效性
print(url.isValid())   # True# 判断是否为本地文件
local_url = QUrl.fromLocalFile("C:/Users/Example/file.txt")
print(local_url.isLocalFile())  # True

典型应用场景

  • 网络请求时构建和解析 URL
  • 处理本地文件路径与网络地址的转换
  • 管理和校验用户输入的地址信息

更多详细内容可参考官方文档:QUrl — Qt for Python

http://www.xdnf.cn/news/10425.html

相关文章:

  • Vert.x学习笔记-EventLoop与Context的关系
  • 图像处理篇---face_recognition库实现人脸检测
  • Linux系统之gettext详解
  • Excel to JSON 插件 2.4.0 版本更新
  • 【java面试】redis篇
  • 【Linux系统】第八节—进程概念(上)—冯诺依曼体系结构+操作系统+进程及进程状态+僵尸进程—详解!
  • 【请关注】ELK集群部署真实案例分享
  • JS中的函数防抖和节流:提升性能的关键技术
  • 设计模式——模版方法设计模式(行为型)
  • 定时任务:springboot集成xxl-job-core(二)
  • Python-Selenium报错截图
  • Go 即时通讯系统:客户端与服务端 WebSocket 通信交互
  • 【HTML-15.3】HTML表单隐藏域深度解析:从基础使用到高级实践
  • Java补充(Java8新特性)(和IO都很重要)
  • LeRobot ACT——LeRobot对ALOHA ACT策略的封装:含源码解析与真机部署(效果比肩ACT原论文)
  • 【量化交易学习】布林线(BOLL)指标
  • uni-app学习笔记二十一--pages.json中tabBar设置底部菜单项和图标
  • NodeJS全栈开发面试题讲解——P6安全与鉴权
  • Java求职者面试指南:DevOps技术栈深度解析
  • [AI算法] 什么事RoPE scaling
  • 精英-探索双群协同优化(Elite-Exploration Dual Swarm Cooperative Optimization, EEDSCO)
  • 26考研——文件管理_文件系统(4)
  • 【JMeter】性能测试知识和工具
  • ARM P15协处理器指令详解:架构、编程与应用实践
  • Spark on Hive表结构变更
  • 2024年数维杯国际大学生数学建模挑战赛A题飞行器激光测速中的频率估计问题解题全过程论文及程序
  • flutter 构建报错Unsupported class file major version 65
  • Java高效处理大文件:避免OOM的深度实践
  • 大语言模型的推理能力
  • 现代前端框架的发展与演进