更多精彩内容 |
---|
👉内容导航 👈 |
👉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 获取绝对路径
-
返回main所在绝对路径;
def get_main_dir(): # 获取主入口文件的绝对路径(兼容直接运行和打包环境) main_path = os.path.abspath(sys.argv[0]) return os.path.dirname(main_path)
-
✅
os.path.abspath(__file__)
:始终返回当前脚本的绝对路径(最可靠)import os current_path = os.path.abspath(__file__) # 获取当前文件的绝对路径(含文件名) current_dir = os.path.dirname(current_path) # 提取目录部分 print(current_dir)
-
os.getcwd()
(Python标准库)-
作用:返回当前工作目录(Current Working Directory)的绝对路径。
-
动态性:路径会随用户启动脚本时的终端路径变化而变化。
-
适用场景:需要动态获取脚本运行时所在目录(如处理相对路径文件)。
-
示例:用户通过命令行
cd /project && python script.py
,则os.getcwd()
返回/project
。
-
-
-
app.applicationDirPath()
(如PyQt/PySide中的方法)-
作用:返回应用程序可执行文件所在目录的绝对路径。
-
静态性:路径固定为应用程序安装位置,不受运行环境的影响。
-
适用场景:
- GUI应用中需访问与可执行文件绑定的资源(如配置文件、图标)。
-
示例:若应用安装在
/opt/myapp
,无论从何处启动,均返回/opt/myapp
。
-
3 指定翻译字符
Qt中在UI文件中设置的字符,默认都是可以被翻译的,但是在代码中就需要使用tr()或者translate()函数包含的才可以被翻译。main函数由于不是QObject子类,所以不能使用tr,需要使用translate。
在PySide6中,translate
和tr
都是用于处理国际化(i18n)和本地化(l10n)的函数,但它们的使用场景和方式有所不同。
-
tr
是一个静态方法,通常用于类中定义字符串的翻译。它被设计为类方法,因此可以与Qt的元对象系统很好地集成。当你在一个QWidget子类中使用tr
方法时,Qt的国际化工具可以自动找到这些字符串并将其提取到翻译文件中。使用示例如下:def some_function(self): translated_string = self.tr("Hello, World!")
CopyInsert
-
translate
是一个全局函数,可以在任何地方调用,而不需要类的上下文。它需要你提供上下文来帮助Qt的国际化工具识别字符串,这通常是一个类的名称。使用translate
的一个好处是,你可以在不创建类实例的情况下进行翻译。使用示例如下:translated_string = QCoreApplication.translate("MyClass", "Hello, World!")