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

(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.dtcms.com/a/191147.html

相关文章:

  • c#中equal方法与gethashcode方法之间有何关联?
  • Linux514 rsync 解决方案环境配置
  • MySQL之基础事务
  • Python uv包管理器使用指南:从入门到精通
  • 鸿蒙5.0项目开发——鸿蒙天气项目的实现(主页1)
  • 力扣144题:二叉树的前序遍历(递归)
  • 力扣-105.从前序与中序遍历序列构造二叉树
  • 国产ETL数据集成软件和Informatica 相比如何
  • Node.js中MongoDB连接的进阶模块化封装
  • attention_weights = torch.ones_like(prompt_embedding[:, :, 0]):切片操作获取第二维度,第三维度
  • OpenCV人脸识别LBPH算法原理、案例解析
  • BGP联邦和发射试验
  • 查询公网IP地址的方法:查看自己是不是公网ip,附内网穿透外网域名访问方案
  • python如何合并excel单元格
  • 生成式AI辅助编程目录
  • 芯片测试之Input Leakage Current(输入漏电流)Test全解析:从原理到实战
  • css 左右布局
  • REVERSE学习笔记(攻防世界xxxorrr)
  • 万文c++继承
  • AI日报 · 2025年5月14日|Android 生态大型更新与多端 Gemini 集成
  • 深度解析智能体:从概念到应用的全方位洞察
  • BGP实验2
  • 机器学习 Day16 聚类算法 ,数据降维
  • 高等数学第七章---微分方程(§7.4-§7.5可降阶的高阶微分方程、二阶线性微分方程)
  • AGI大模型(15):向量检索之调用ollama向量数据库
  • C++中如何实现一个单例模式?
  • SpringBoot--springboot配置文件详解以及简易整合MyBatis
  • 直流电机风速仪
  • 【位运算】常见算法公式使用
  • 建筑IT数字化突围:建筑设计企业的生存法则重塑