这应该是一个愚蠢的问题。我很好奇,无法自己找到答案。
E.g。我在PyQt5中定义了一些小部件:
self.lbl = QLabel("label")
self.btn = QPushButton("click")
self.txt = QLineEdit("text")
是否有任何方法可以检测self.lbl
,self.btn
或self.txt
是哪种窗口小部件?
我可以想象:通过检测小部件类型,输入为self.lbl
,输出应为QLabel
......或类似的内容。
我只找到了isWidgetType()方法。但这不是我想要的。
感谢您的帮助!
答案 0 :(得分:3)
有几种方法可以获取窗口小部件的名称:
__class__
:print(self.lbl.__class__.__name__)
print(self.lbl.metaObject().className())
这些以前的方法返回带有类名称的字符串,但是如果要验证对象是否属于某个类,可以使用isinstance()
:
is_label = isinstance(self.lbl, QLabel)
另一种选择是使用type()
,但如果您想获得有关isinstace()
和type()
的更多信息,请不要使用此选项,请阅读以下内容:What are the differences between type() and isinstance()?
答案 1 :(得分:1)
您可以使用标准Python方法检查对象类型:
print(type(self.lbl))
print(isinstance(self.lbl, QLabel)