a = QtGui.QLineEdit()
Есть ли способ запросить, что виджет Qt является переменной a
? Похоже, что некоторые виджеты Qt будут снабжены атрибутом .uiType
. Но некоторые (например, макеты) - нет.Как получить вид виджетов Qt
a = QtGui.QLineEdit()
Есть ли способ запросить, что виджет Qt является переменной a
? Похоже, что некоторые виджеты Qt будут снабжены атрибутом .uiType
. Но некоторые (например, макеты) - нет.Как получить вид виджетов Qt
Вы можете получить тип любого объекта в Python с помощью type
built-in:
print type(a)
Вы также можете быть заинтересованы в атрибутах __name__
и __class__
, которые будут содержать данные, соответствующие имени виджета и класса:
type(a).__name__ # Returns class name as a string
a.__class__ # Same as type(a)
Обратите внимание, что если вам нужно выполнить typecheck, вы должны использовать isinstance
:
isinstance(a, type_to_test_for)
Это будет учитывать наследование.
Вы пробовали a.metaObject().className()
?
Для получения дополнительной информации см. Документацию QObject.
возможно 'a .__ class__' также ... –
Вы действительно прочитали какую-либо документацию, с которой вы связались? Атрибут '__name__' специфичен для классов, а не для экземпляров, поэтому' a .__ name__' поднимет 'AttributeError'. Кроме того, 'a .__ class__' возвращает то же самое, что и' type (a) ', а не строка. Таким образом, чтобы получить имя класса, вы хотите '.__ class __.__ name__' или' type (a) .__ name__'. – ekhumoro
Да, я их прочитал. Я просто забыл удалить слово «строка», когда редактировал. Кроме того, я упомянул '__name__', если он хочет имя объекта класса. Но я согласен, что это немного запутанно, так как у него есть экземпляр в его коде. Я исправил это, чтобы сделать то, что вы сказали. Спасибо, что указали на ошибки. :) – iCodez