(3)python开发经验

文章目录

      • 1 sender返回对象找不到函数
      • 2 获取绝对路径
      • 3 指定翻译字符


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

1 sender返回对象找不到函数

在PySide6中多个信号绑定一个槽函数,使用self.send()返回对象,发现无法直接调用对象的函数;

需要使用isinstance()

isinstance() 用于确保 self.sender() 返回的对象确实是 QCheckBox 类型,然后再进行相应的操作。

isinstance() 函数的语法如下:

isinstance(object, classinfo)
  • object 是要检查的对象。
  • classinfo 是一个类型或类型元组,用于检查 object 是否是该类型或其子类的实例。
def on_checkbox_clicked(self, checked):checkbox = self.sender()print(checkbox)if isinstance(checkbox, QCheckBox): # 这里if checked:checkbox.setText("测试")else:checkbox.setText("未测试")else:print("触发信号的对象不是 QCheckBox 类型")

2 获取绝对路径

  1. 返回main所在绝对路径;

    def get_main_dir():# 获取主入口文件的绝对路径(兼容直接运行和打包环境)main_path = os.path.abspath(sys.argv[0])return os.path.dirname(main_path)
    
  2. os.path.abspath(__file__):始终返回当前脚本的绝对路径(最可靠)

    import oscurrent_path = os.path.abspath(__file__)        # 获取当前文件的绝对路径(含文件名)
    current_dir = os.path.dirname(current_path)     # 提取目录部分
    print(current_dir)
    
  3. os.getcwd()(Python标准库)

    • 作用:返回当前工作目录(Current Working Directory)的绝对路径。

      • 动态性:路径会随用户启动脚本时的终端路径变化而变化。

      • 适用场景:需要动态获取脚本运行时所在目录(如处理相对路径文件)。

      • 示例:用户通过命令行 cd /project && python script.py,则 os.getcwd() 返回 /project

        在这里插入图片描述

  4. app.applicationDirPath()(如PyQt/PySide中的方法)

    • 作用:返回应用程序可执行文件所在目录的绝对路径。

    • 静态性:路径固定为应用程序安装位置,不受运行环境的影响。

    • 适用场景:

      • GUI应用中需访问与可执行文件绑定的资源(如配置文件、图标)。
    • 示例:若应用安装在 /opt/myapp,无论从何处启动,均返回 /opt/myapp

3 指定翻译字符

Qt中在UI文件中设置的字符,默认都是可以被翻译的,但是在代码中就需要使用tr()或者translate()函数包含的才可以被翻译。main函数由于不是QObject子类,所以不能使用tr,需要使用translate。

在PySide6中,translatetr都是用于处理国际化(i18n)和本地化(l10n)的函数,但它们的使用场景和方式有所不同。

  1. tr 是一个静态方法,通常用于类中定义字符串的翻译。它被设计为类方法,因此可以与Qt的元对象系统很好地集成。当你在一个QWidget子类中使用tr方法时,Qt的国际化工具可以自动找到这些字符串并将其提取到翻译文件中。使用示例如下:

    def some_function(self):translated_string = self.tr("Hello, World!")
    

    CopyInsert

  2. translate 是一个全局函数,可以在任何地方调用,而不需要类的上下文。它需要你提供上下文来帮助Qt的国际化工具识别字符串,这通常是一个类的名称。使用translate的一个好处是,你可以在不创建类实例的情况下进行翻译。使用示例如下:

    translated_string = QCoreApplication.translate("MyClass", "Hello, World!")
    


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/910457.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Redis】RedLock实现原理

Redis的RedLock是一种分布式锁算法,旨在通过多节点协作解决传统单节点Redis锁的容错性问题。其核心原理如下: 1. 设计目标 互斥性:同一时刻只有一个客户端持有锁。死锁避免:锁自动超时释放,防止客户端崩溃导致死锁。容…

KV cache 缓存与量化:加速大型语言模型推理的关键技术

引言 在大型语言模型(LLM)的推理过程中,KV 缓存(Key-Value Cache) 是一项至关重要的优化技术。自回归生成(如逐 token 生成文本)的特性决定了模型需要反复利用历史token的注意力计算结果&#…

Angular | 利用 `ChangeDetectorRef` 解决 Angular 动态显示输入框的聚焦问题

在 Angular 应用开发中,实现用户点击按钮后,原地切换显示一个输入框并自动获取焦点的功能,是一个常见的交互模式。例如,搜索图标点击后变为搜索框,用户可以直接输入。然而,由于 Angular 的变更检测和 DOM 更…

Spring Boot之Web服务器的启动流程分析

如何判断创建哪种web容器:servlet?reactive? 我们在启动Spring Boot程序的时候,会使用SpringApplication.run方法来启动,在启动流程中首先要判断的就是需要启动什么类型的服务器,是servlet?或者…

【SpringBoot】从零开始全面解析Spring MVC (一)

本篇博客给大家带来的是SpringBoot的知识点, 本篇是SpringBoot入门, 介绍Spring MVC相关知识. 🐎文章专栏: JavaEE初阶 🚀若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 王子…

【TDengine源码阅读】TAOS_DEF_ERROR_CODE(mod, code)

2025年5月13日&#xff0c;周二清晨 #define TAOS_DEF_ERROR_CODE(mod, code) ((int32_t)((0x80000000 | ((mod)<<16) | (code))))这段代码定义了一个宏 TAOS_DEF_ERROR_CODE(mod, code)&#xff0c;用于生成一个32位有符号整数&#xff08;int32_t&#xff09;形式的错误…

w~大模型~合集30

我自己的原文哦~ https://blog.51cto.com/whaosoft/13284996 #VideoMamba 视频理解因大量时空冗余和复杂时空依赖&#xff0c;同时克服两个问题难度巨大&#xff0c;CNN 和 Transformer 及 Uniformer 都难以胜任&#xff0c;Mamba 是个好思路&#xff0c;让我们看看本文是…

跨时钟域(CDC,clock domain crossing)信号处理

参考视频&#xff1a; 数字IC&#xff0c;FPGA秋招【单bit信号的CDC跨时钟域处理手撕代码合集】_哔哩哔哩_bilibili 一、亚稳态 原因是&#xff1a;建立时间和保持时间没有保持住。然后在下图的红框里面&#xff0c;产生亚稳态。因为电路反馈机制&#xff0c;最后大概率会恢复…