如何检测小部件的类型?

Rt *_*Rtt 2 python pyqt pyqt4 pyqt5

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

例如,我在PyQt5中定义了一些小部件:

self.lbl = QLabel("label")
self.btn = QPushButton("click")
self.txt = QLineEdit("text")
Run Code Online (Sandbox Code Playgroud)

是否有任何检测什么样的插件的方法self.lblself.btn或者self.txt是谁?

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

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

谢谢您的帮助!

eyl*_*esc 5

有几种获取小部件名称的方法:

  • 使用__class__

print(self.lbl.__class__.__name__)
Run Code Online (Sandbox Code Playgroud)
  • 使用QMetaObject:

print(self.lbl.metaObject().className())
Run Code Online (Sandbox Code Playgroud)

这些先前的方法返回一个带有类名称的字符串,但是如果要验证对象是否属于类,可以使用isinstance()

is_label = isinstance(self.lbl, QLabel)
Run Code Online (Sandbox Code Playgroud)

另一个选择是使用,type()但如果要获取更多信息isinstance()type()阅读以下内容,则不建议使用:type()和isinstance()之间有什么区别?