PyQt TypeError: «PySide2.QtCore.QObject.eventFilter» вызван с неправильными типами аргументов [закрыто]Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 PyQt TypeError: «PySide2.QtCore.QObject.eventFilter» вызван с неправильными типами аргументов [закрыто]

Сообщение Anonymous »


Я использую код Python/Qt в Linux Raspberry Pi 6.1.21-v8+ aarch64 GNU/Linux (ARM) или в Ubuntu 20.04 x86_64 с Qt 5.15.2 и PySide2.

У меня есть два поля со списком: одно обновляет другое, а в другом есть элементы, выделенные серым цветом. У меня также объявлен фильтр событий (ничего не делающий).

Моя основная программа:

импортировать систему из PySide2.QtWidgets импорт QApplication из диалога импорта Диалог приложение класса (QApplication): защита __init__(self, sys_argv): super(App, self).__init__(sys_argv) self.main_view = Диалог() self.main_view.show() def eventFilter(self, obj, event): вернуть super(App, self).eventFilter(obj, event) если __name__ == "__main__": приложение = Приложение(sys.argv) app.installEventFilter(приложение) sys.exit(app.exec_()) Код моего диалога:

из PySide2.QtWidgets импорт QDialog из диалога_ui импорта Ui_Dialog Диалог класса (QDialog): защита __init__(сам): супер().__init__() self._ui = Ui_Dialog() self._ui.setupUi(сам) self._ui.comboBox1.currentIndexChanged.connect(self.comboBox1_indexChanged_slot) def comboBox1_indexChanged_slot(self, index): self._ui.comboBox2.clear() пропустить = Ложь для индекса в диапазоне (100): self._ui.comboBox2.addItem(f"{index}") если пропустить: self._ui.comboBox2.model().item(index).setEnabled(False) пропускать = не пропускать и сгенерированный код формы:

из импорта PySide2.QtCore * из импорта PySide2.QtGui * из импорта PySide2.QtWidgets * класс Ui_Dialog (объект): def setupUi(self, Dialog): self.horizontalLayout = QHBoxLayout(Диалог) self.comboBox1 = QComboBox(Диалоговое окно) self.comboBox1.setObjectName(u"comboBox1") self.comboBox1.addItem("element1") self.comboBox1.addItem("element2") self.horizontalLayout.addWidget(self.comboBox1) self.comboBox2 = QComboBox(Диалоговое окно) self.comboBox2.setObjectName(u"comboBox2") self.horizontalLayout.addWidget(self.comboBox2) QMetaObject.connectSlotsByName(Диалог) Форма диалога содержит только два поля со списком, первое из которых содержит два элемента (код, сгенерированный pyqt).

Я наблюдаю странное поведение: после нескольких альтернативных изменений в двух полях со списком у меня есть следующее:

Traceback (самый последний вызов — последний): Файл "./bug_combo_box.py", строка 13, в eventFilter вернуть super(App, self).eventFilter(obj, event) Ошибка типа: «PySide2.QtCore.QObject.eventFilter» вызван с неправильными типами аргументов: PySide2.QtCore.QObject.eventFilter(Dialog, QStandardItem) Поддерживаемые подписи: PySide2.QtCore.QObject.eventFilter(PySide2.QtCore.QObject, PySide2.QtCore.QEvent) Что происходит? Повреждение памяти? Что странно, так это то, что это всегда одна и та же ошибка, с изменением только первого параметра (здесь Dialog, который может быть основным QDialog) (я также видел App или QFrame). Вторым параметром всегда является QStandardItem, который не имеет смысла (здесь ожидаются только события, наследуемые от QEvent).

Если я удалю строку self._ui.comboBox2.model().item(index).setEnabled(False), ошибки больше не будет. Если я удалю фильтр событий, ошибок больше не будет. По запросу я мог бы предоставить небольшой пакет приложения с приведенным выше кодом.

Что не так? Qt, PyQt или мой код?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»