基于子字符串在Ui_Form中查找变量

问题描述 投票:0回答:1

我有一个来自QtDesigner的Ui_Form,它包含变量名,例如:

self.ui.alphabetic_menu_QLabel_A
...
self.ui.alphabetic_menu_QLabel_Z
self.ui.label
...
self.ui.label_10

我看到Ui_Form不可迭代。是否有一种很好的Python方法可以将所有实例提取到包含指定子字符串的变量名列表中(例如,alphabetic_menu_QLabel)?

python self iterable
1个回答
0
投票

我不知道QtDesigner,但如果你正在处理一个python实例,可以使用dir()内置方法完成。

dir(yourform.ui)返回所有属性名称的列表。从你的例子中,我认为你应该得到类似的东西:['alphabetic_menu_QLabel_A', ..., 'alphabetic_menu_QLabel_Z', 'label', ..., 'label_10', ...]

要小心,因为dir()也会返回其他内容。来自文档:

该列表包含对象的属性名称,其类的属性名称,以及其类的基类的属性的递归。

所以你需要过滤列表。如果您只对包含给定子字符串的属性感兴趣,则可以使用列表推导。

mysubstr = 'alphabetic_menu_QLabel'
myattributes = [att for att in dir(yourform.ui) if mysubstr in att]
© www.soinside.com 2019 - 2024. All rights reserved.