PyQt5:如何检测小部件的类型?

时间:2018-01-19 18:28:04

标签: python pyqt pyqt4 pyqt5

这应该是一个愚蠢的问题。我很好奇,无法自己找到答案。

E.g。我在PyQt5中定义了一些小部件:

self.lbl = QLabel("label")
self.btn = QPushButton("click")
self.txt = QLineEdit("text")

是否有任何方法可以检测self.lblself.btnself.txt是哪种窗口小部件?

我可以想象:通过检测小部件类型,输入为self.lbl,输出应为QLabel ......或类似的内容。

我只找到了isWidgetType()方法。但这不是我想要的。

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

有几种方法可以获取窗口小部件的名称:

  • 使用__class__
print(self.lbl.__class__.__name__)
  • 使用QMetaObject:
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)