PyQt TypeError: «PySide2.QtCore.QObject.eventFilter» вызван с неправильными типами аргументов [закрыто] ⇐ Python
PyQt TypeError: «PySide2.QtCore.QObject.eventFilter» вызван с неправильными типами аргументов [закрыто]
Я использую код 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 или мой код?
Я использую код 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 или мой код?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Наведение eventFilter от Pyside2 до Pyside6 не возвращает QHoverEvent для позиции()
Anonymous » » в форуме Python - 0 Ответы
- 35 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Ожидание завершения PyQt/PySide.QtCore.QThread, прежде чем что-то делать
Anonymous » » в форуме Python - 0 Ответы
- 23 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Ожидание завершения PyQt/PySide.QtCore.QThread, прежде чем что-то делать
Anonymous » » в форуме Python - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Ожидание завершения PyQt/PySide.QtCore.QThread, прежде чем что-то делать
Anonymous » » в форуме Python - 0 Ответы
- 11 Просмотры
-
Последнее сообщение Anonymous
-