【问题标题】:How to detect the type of widget?如何检测小部件的类型?
【发布时间】:2018-06-29 01:36:34
【问题描述】:

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

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

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

有什么方法可以检测self.lblself.btnself.txt是什么类型的小部件?

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

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

【问题讨论】:

    标签: python pyqt pyqt4 pyqt5


    【解决方案1】:

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

    • 使用__class__:

    print(self.lbl.__class__.__name__)
    
    • 使用 QMetaObject:

    print(self.lbl.metaObject().className())
    

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

    is_label = isinstance(self.lbl, QLabel)
    

    另一种选择是使用type(),但不建议使用,如果您想获得有关isinstance()type() 的更多信息,请阅读以下内容:What are the differences between type() and isinstance()?

    【讨论】:

      【解决方案2】:

      您可以只使用标准 Python 方法来检查对象类型:

      print(type(self.lbl))
      print(isinstance(self.lbl, QLabel)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-23
        • 2018-11-11
        • 1970-01-01
        • 2015-08-07
        • 1970-01-01
        • 2014-09-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多