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

(7)python开发经验

文章目录

      • 1 找不到资源文件
      • 2 使用subprocess执行时有黑色弹窗
      • 3 找不到exec
      • 4 pyside6-project lupdate的bug
      • 5 找不到pyd模块
      • 6 pyd模块编码错误
      • 7 运行显示`Qt platform plugin "windows" in "`
      • 8 `tr()`包含的字符串无法被翻译


更多精彩内容
👉内容导航 👈
👉Qt开发 👈
👉python开发 👈

1 找不到资源文件

使用rcc将qrc文件编译为py文件后,找不到资源文件可能是因为使用的是python原生的函数,这里是一个大坑,例如:

print(QFile.exists(":/style/style.css"))   # true
print(os.path.exists(":/style/style.css")) # false
# 打开失败
with open(":/style.css", "r") as f:app.setStyleSheet(f.read())  # 设置样式表

2 使用subprocess执行时有黑色弹窗

  • 如下所示,可通过shell=True指定使用shell执行,不会出现弹窗。

    ret = subprocess.run(['adb', 'connect', '127.0.0.1:7555'], shell=True,stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    

3 找不到exec

错误信息:

Traceback (most recent call last):File "E:\Code\py\PythonProject\main.py", line 27, in <module>sys.exit(app.exec())
AttributeError: 'PySide2.QtWidgets.QApplication' object has no attribute 'exec'

解决办法:

  • PySide2中使用的是sys.exit(app.exec_()),PySide6使用的是sys.exit(app.exec())

4 pyside6-project lupdate的bug

  • 使用pyside6-project lupdate命令可以在pyside6中生成翻译使用的ts文件,但是有时候我们想将ts文件放在子文件夹下,却发现无法实现;

  • 并且使用pyside6-project lupdate命令无法清除已经失效的文本;

  • 这是因为pyside6-project lupdate中使用的是ts文件名,不包含路径,所以就是在工程路径下,并且有几个ts文件就会执行几次。

    (.venv) PS E:\Code\py\Test> pyside6-project.exe lupdate
    pyside6-lupdate main.py mainwindow.py TableWidget.py mainwindow.ui logwidget.ui control.ui -ts Test_zh_CN.ts
    
  • 实现代码如下所示:for用来遍历ts文件,有几个ts文件就会调用run_command()执行几次。

    cmd_prefix.append("-ts")for ts_file in self.project.ts_files:if requires_rebuild(source_files, ts_file):cmd = cmd_prefixcmd.append(ts_file.name)run_command(cmd, cwd=project_dir)
    
  • 解决办法:打开.venv\Lib\site-packages\PySide6\scripts\project.py文件,在def lupdate(self)函数中修改为下面所示代码。

    def lupdate(self):for sub_project_file in self.project.sub_projects_files:Project(project_file=sub_project_file).lupdate()if not self.project.ts_files:print(f"{self.project.project_file.name}: No .ts file found.",file=sys.stderr)returnsource_files = self.project.python_files + self.project.ui_filesproject_dir = self.project.project_file.parentcmd_prefix = [LUPDATE_CMD] + [os.fspath(p.relative_to(project_dir)) for p in source_files]cmd_prefix.append("-ts")ts_files = []for ts_file in self.project.ts_files:if requires_rebuild(source_files, ts_file):ts_dir = ts_file.parentif not ts_dir.exists():ts_dir.mkdir(parents=True, exist_ok=True)ts_files.append(ts_file.resolve().as_posix())if ts_files:cmd = cmd_prefix;cmd.extend(ts_files)cmd.append("-no-obsolete") # 清除失效文本run_command(cmd, cwd=project_dir)
    
  • 运行结果如下所示:会将ts文件生成到指定路径中,并且只执行一次。

    (.venv) PS E:\Code\py\Test> pyside6-project.exe lupdate
    pyside6-lupdate main.py mainwindow.py TableWidget.py mainwindow.ui logwidget.ui control.ui -ts E:/Code/py/Test/Language/Test_zh_CN.ts E:/Code/py/Test/Language/Test_en_US.ts
    

5 找不到pyd模块

  • 可能是python版本不一致,例如pyd是使用python3.12编译,使用python3.8导入就找不到。
  • 如果PYBIND11_MODULE中设置的模块名称和pybind11_add_module指定编译生成的名称不同也找不到。

6 pyd模块编码错误

  • python默认使用utf-8编码,如果使用pybind11导出的cpp文件使用的是其他编码,则生成的pyd模块导入时会报错。
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb2 in position 5: invalid start byteThe above exception was the direct cause of the following exception:Traceback (most recent call last):File "E:\Code\py\PythonProject1\main.py", line 1, in <module>import pcba_plugin
ImportError: initialization failed

7 运行显示Qt platform plugin "windows" in "

qt.qpa.plugin: Could not find the Qt platform plugin "windows" in ""
This application failed to start because no Qt platform plugin could be initialized.  Reinstalling the application may fix this problem.
  • 解决办法:路径不要有中文名。

8 tr()包含的字符串无法被翻译

  • 在PySide6中,self.tr() 方法用于翻译字符串。

  • 如果你发现 self.tr(f"中文{test}") 这样的格式无法被翻译,可能是因为Qt的翻译系统无法识别这种格式的字符串。

  • Qt的翻译工具(如 lupdate)通常需要字符串是静态的,以便能够提取这些字符串进行翻译。

  • 解决办法,改为:

    self.tr("设备{arg}已离线:").format(arg=text)
    # 或者
    self.tr("发现新设备:") + device
    


相关文章:

(7)python开发经验

文章目录 1 找不到资源文件2 使用subprocess执行时有黑色弹窗3 找不到exec4 pyside6-project lupdate的bug5 找不到pyd模块6 pyd模块编码错误7 运行显示Qt platform plugin "windows" in "8 tr()包含的字符串无法被翻译 更多精彩内容&#x1f449;内容导航 &…...

学习以任务为中心的潜动作,随地采取行动

25年5月来自香港大学、OpenDriveLab 和智元机器人的论文“Learning to Act Anywhere with Task-centric Latent Actions”。 通用机器人应该在各种环境中高效运行。然而&#xff0c;大多数现有方法严重依赖于扩展动作标注数据来增强其能力。因此&#xff0c;它们通常局限于单一…...

15.springboot-控制器处理参数传递

22.springMVC Spring MVC 是非常著名的 Web 应用框架&#xff0c;现在的大多数 Web 项目都采用 Spring MVC。它与 Spring 有着紧 密的关系。是 Spring 框架中的模块&#xff0c;专注 Web 应用&#xff0c;能够使用 Spring 提供的强大功能&#xff0c;IoC , Aop 等等。 Spring…...

半成品的开源双系统VLA模型,OpenHelix-发表于2025.5.6

半成品的开源双系统VLA模型&#xff0c;OpenHelix https://openhelix-robot.github.io/ 0. 摘要 随着OpenVLA的开源&#xff0c;VLA如何部署到真实的机器人上获得了越来越多的关注&#xff0c;各界人士也都开始尝试解决OpenVLA的效率问题&#xff0c;双系统方案是其中一个非…...

网站推荐(第四期)

好久没有推荐过网站了&#xff0c;重拾推荐一波&#xff0c;最近发现这几个确实不错。 某火箭共享账号 官网&#xff1a;https://id.bocchi.vip/ 苹果用户专用&#xff0c;都是买了某火箭的账号&#xff0c;懂得都懂。 这玩意竟然还是个开源项目&#xff0c;项目地址&#x…...

2024 睿抗机器人开发者大赛CAIP-编程技能赛-专科组(国赛)解题报告 | 珂学家

前言 题解 2024 睿抗机器人开发者大赛CAIP-编程技能赛-专科组&#xff08;国赛&#xff09;&#xff0c;陈越姐姐出题。 国赛比省赛&#xff0c;难度增强了不少&#xff0c;题目就剩下4个题了。 涉及堆栈&#xff0c;hash表&#xff0c;优先队列等高阶数据结构的使用&#x…...

git工具使用详细教程-------命令行和TortoiseGit图形化

下载 git下载地址&#xff1a;https://git-scm.com/downloads TortoiseGit&#xff08;图形化工具&#xff09;下载地址&#xff1a;https://tortoisegit.org/download/ 认识git结构 工作区&#xff1a;存放代码的地方 暂存区&#xff1a;临时存储&#xff0c;将工作区的代码…...

Mysql新增

插入一个记录需要的时间由下列因素组成&#xff0c;其中的数字表示大约比例&#xff1a; 连接&#xff1a;(3)发送查询给服务器&#xff1a;(2)分析查询&#xff1a;(2)插入记录&#xff1a;&#xff08;1x记录大小&#xff09;插入索引&#xff1a;&#xff08;1x索引&#x…...

AI Agent开发第64课-DIFY和企业现有系统结合实现高可配置的智能零售AI Agent(上)

开篇 我们之前花了将近10个篇章讲Dify的一些基础应用,包括在讲Dify之前我们讲到了几十个AI Agent的开发例子,我不知道大家发觉了没有,在AI Agent开发过程中我们经常会伴随着这样的一些问题: 需要经常改猫娘;需要经常改调用LLM的参数,甚至在一个流程中有3个节点,每个节点…...

【嵌入式】记一次解决VScode+PlatformIO安装卡死的经历

PlatformIO 是开源的物联网开发生态系统。提供跨平台的代码构建器、集成开发环境&#xff08;IDE&#xff09;&#xff0c;兼容 Arduino&#xff0c;ESP8266和mbed等。 开源库地址&#xff1a;https://github.com/platformio 在 VScode 中配置 PlatformIO 插件&#xff0c;记录…...

文件系统交互实现

关于之前的搭建看QT控件文件系统的实现-CSDN博客&#xff0c;接下来是对本程序的功能完善&#xff0c;我想着是这样设计的&#xff0c;打开一个目录以后&#xff0c;鼠标选中一个项可以是目录&#xff0c;也可以是文件&#xff0c;右键可以出现一个菜单选择操作&#xff0c;比如…...

MySQL 事务(一)

文章目录 CURD不加控制&#xff0c;会有什么问题CURD满足什么属性&#xff0c;能解决上述问题&#xff1f;什么是事务为什么要有事务事务的版本支持了解事务的提交方式 事务常见操作方式研究并发场景事务的正常操作事务的非正常情况的案例结论事务操作的注意事项 CURD不加控制&…...

【全解析】EN 18031标准下的 AUM 身份认证机制[下篇]

在上篇文章中&#xff0c;我们详细介绍了EN 18031标准中AUM身份认证机制的AUM - 1、AUM - 2和AUM - 3条款。今天&#xff0c;我们将继续深入探讨AUM - 4到AUM - 6的相关内容&#xff0c;进一步了解该标准如何保障无线电设备的身份认证安全。 一、AUM - 4&#xff1a;更改认证器…...

常见排序算法及复杂度分析

冒泡排序 (Bubble Sort) 基本思想 相邻元素比较&#xff0c;大的元素后移 每轮将最大元素"冒泡"到末尾 代码实现 void bubbleSort(int arr[], int n) {for (int i 0; i < n-1; i) {for (int j 0; j < n-i-1; j) {if (arr[j] > arr[j1]) {swap(arr[j]…...

彻底解决sublime text4无法打开install package界面安装插件问题

1. 说明 最新版的 sublime text4&#xff0c;不管是通过软件自带的命令安装的 package control 插件&#xff0c;还是从官网下载的 package control 插件&#xff0c;之后通过 CommandShiftP 打开面板&#xff0c;输入 Package Control&#xff0c;可能找不到 Package Control…...

用户现场不支持路由映射,如何快速将安防监控EasyCVR视频汇聚平台映射到公网?

一、方案背景​ 随着数字化安防与智能交通管理发展&#xff0c;视频监控远程管理需求激增。EasyCVR作为专业视频融合平台&#xff0c;具备多协议接入等核心功能&#xff0c;是智能监控的重要工具。但实际部署中&#xff0c;当EasyCVR处于内网且路由器无法进行端口映射时&#…...

C#实现访问远程硬盘(附源码)

在现实场景中&#xff0c;我们经常用到远程桌面功能&#xff0c;而在某些场景下&#xff0c;我们需要使用类似的远程硬盘功能&#xff0c;这样能非常方便地操作对方电脑磁盘的目录、以及传送文件。那么&#xff0c;这样的远程硬盘功能要怎么实现了&#xff1f; 这次我们将给出…...

嵌入式软件学习记录 - DAY2

一、volatile 修饰符 1. 能修饰什么&#xff1f; 变量&#xff08;包括普通变量、指针、结构体成员等&#xff09;。不能修饰函数&#xff08;但函数参数或返回值可以是 volatile 类型&#xff09;。 2. 作用 告诉编译器不要优化该变量的访问&#xff1a;每次读取或写入该变…...

图片、音频、视频都能转?简鹿格式工厂了解一下

我们每天都会接触到各种各样的音视频和图片文件。无论是拍摄的照片、录制的视频&#xff0c;还是下载的音频资源&#xff0c;它们往往以不同的格式存在——有些适合分享&#xff0c;有些适合编辑&#xff0c;而有些则仅限特定设备或平台使用。格式不统一的问题&#xff0c;正在…...

Qt—用SQLite实现简单的注册登录界面

1.实现目标 本次实现通过SQLite制作一个简易的登录窗口&#xff0c;当点击注册按钮时&#xff0c;登录窗口会消失&#xff0c;会出现一个新的注册界面&#xff1b;完成注册或退出注册时&#xff0c;注册窗口会消失&#xff0c;重新出现登录窗口。注册过的用户信息会出现在SQLi…...

Nginx模块配置与请求处理详解

Nginx 作为模块化设计的 Web 服务器,其核心功能通过不同模块协同完成。以下是各模块的详细配置案例及数据流转解析: 一、核心模块配置案例 1. Handler 模块(内容生成) 功能:直接生成响应内容(如静态文件、重定向等) # 示例1:静态文件处理(ngx_http_static_module)…...

MySQL查询不区分大小写问题剖析

概述 在MySQL中&#xff0c;查询不区分大小写的问题通常与字符集的校对规则&#xff08;Collation&#xff09;有关。以下是详细解释和解决方案资料已经分类整理好&#xff1a;https://pan.quark.cn/s/f52968c518d3 一、原因分析 1. 默认校对规则 MySQL的默认校对规则&#…...

MySQL命令行导出数据(docker版本)

MySQL命令行导出数据(docker版本) 1、登录数据库 $mysql -h 10.1.1.143 -u root -p 2、用命令行从MySQL导出数据(无标题) #查看导出时可以存储的路径 mysql> SHOW VARIABLES LIKE secure_file_priv; ----------------------------------------- | Variable_name | Valu…...

分布式锁: Redisson红锁(RedLock)原理与实现细节

分布式锁是分布式系统的核心基础设施&#xff0c;但 单节点 Redis 锁在高可用场景下存在致命缺陷&#xff1a;当 Redis 主节点宕机时&#xff0c;从节点可能因异步复制未完成而丢失锁信息&#xff0c;导致多个客户端同时持有锁。为此&#xff0c;Redis 作者 Antirez 提出了 Red…...

Python 3.13.3 安装教程

原文来自&#xff1a;Python 3.13.3 安装教程 | w3cschool笔记 &#xff08;请勿标记为付费&#xff01;&#xff01;&#xff01;&#xff09; Python 是一种广泛使用的编程语言&#xff0c;广泛应用于 Web 开发、科学计算、数据处理、人工智能等领域。Python 3.13.3 作为 P…...

现代化水库运行管理矩阵平台如何建设?

政策背景 2023年8月24日&#xff0c;水利部发布的水利部关于加快构建现代化水库运行管理矩阵的指导意见中指出&#xff0c;在全面推进水库工程标准化管理的基础上&#xff0c;强化数字赋能&#xff0c;加快构建以推进全覆盖、全要素、全天候、全周期“四全”管理&#xff0c;完…...

2025程序设计天梯赛补题报告

2025程序设计天梯赛补题报告 仅包含L1 L2 L1-6 这不是字符串题 题目描述 因为每年天梯赛字符串题的解答率都不尽如人意&#xff0c;因此出题组从几年前开始决定&#xff1a;每年的天梯赛的 15 分一定会有一道字符串题&#xff0c;另外一道则一定不是字符串题。 小特现在有…...

SpringBoot3.4.5下Lombok的@Data注解不生效,解决方案

程序员Feri一名12年的程序员,做过开发带过团队创过业,擅长Java、嵌入式、鸿蒙、人工智能等,专注于程序员成长那点儿事,希望在成长的路上有你相伴&#xff01;君志所向,一往无前&#xff01; 1.问题 最近的项目是Python、Java、鸿蒙的来回交叉&#xff0c;再做的一个Java的项目…...

iOS设备投屏Archlinux

我的iphone手机屏太小&#xff0c;我想把手机投到archlinux电脑上看。与是我就想找一个免费的软件。 UxPlay https://github.com/FDH2/UxPlay GPLv3&#xff0c;开源。原来只支持 AirPlay Mirror 协议&#xff0c;现在新增 支持来自 AirPlay 的纯音频 &#xff08;Apple Los…...

如何在 Windows 上安装类似 Synaptic 的 Chocolatey GUI 包管理器

如果你正在寻找类似 Linux 中 APT 的 Windows 包管理器&#xff0c;那么没有什么比 Chocolatey 更好的了。它是 Windows 10 上可用的最佳包管理器之一&#xff0c;可以通过命令行界面安装所有流行的软件和工具。然而&#xff0c;这并不意味着如果你不喜欢命令行&#xff0c;你就…...