Что означает self.itemText(index)
в comboBoxEvent? , поскольку вы получаете текст текущего элемента comboBoxEvent. Есть ли у comboBoxEvent элементы? Нет, он пуст, элементы есть только у QComboBox, который находится в окне, comboBoxEvent не является QComboBox в окне. Это объясняет, почему вы ничего не получаете.
В зависимости от того, что вы хотите сделать, есть следующие методы:
1. Если вы просто хотите получить currentText, а затем использовать сигнал currentTextChanged, comboBoxEvent не должен наследоваться от QComboBox.
class comboBoxEvent:
def getSectionShape(self, text):
print(text)
# ...
comboBox = self.ui_window.comboBox
comboBox.setCurrentIndex(0)
for item in sectionList:
comboBox.addItem(item)
self.comboEvent = comboBoxEvent()
comboBox.currentTextChanged.connect(self.comboEvent.getSectionShape)
# ...
2. Если вы хотите получить всю возможную информацию о QComboBox при выборе нового элемента, тогда лучше получить QComboBox в getSectionShape, для этого есть следующие возможности.
2.1 Сделайте comboBoxEvent объектом QObject, чтобы QComboBox можно было получить с помощью метода sender () в слоте:
from PySide2 import QtCore, QtWidgets
class comboBoxEvent(QtCore.QObject):
@QtCore.Slot()
def getSectionShape(self):
obj = self.sender()
if isinstance(obj, QtWidgets.QComboBox):
index = obj.currentIndex()
text = obj.itemText(index)
print(text)
print("Index changed to: {}".format(index))
# ...
comboBox = self.ui_window.comboBox
comboBox.setCurrentIndex(0)
for item in sectionList:
comboBox.addItem(item)
comboEvent = comboBoxEvent(self)
comboBox.currentIndexChanged.connect(comboEvent.getSectionShape)
# ...
2.2 Пропустите QComboBox через functools.partial:
class comboBoxEvent:
def getSectionShape(self, combo, index):
index = combo.currentIndex()
text = combo.itemText(index)
print(text)
print("Index changed to: {}".format(index))
from functools import partial
# ...
comboBox = self.ui_window.comboBox
comboBox.setCurrentIndex(0)
for item in sectionList:
comboBox.addItem(item)
self.comboEvent = comboBoxEvent()
comboBox.currentIndexChanged.connect(partial(self.comboEvent.getSectionShape, comboBox))
# ...
- Пропустить QComboBox через лямбду
class comboBoxEvent:
def getSectionShape(self, combo):
index = combo.currentIndex()
text = combo.itemText(index)
print(text)
print("Index changed to: {}".format(index))
# ...
comboBox = self.ui_window.comboBox
comboBox.setCurrentIndex(0)
for item in sectionList:
comboBox.addItem(item)
self.comboEvent = comboBoxEvent()
comboBox.currentIndexChanged.connect(lambda ix, c= comboBox: self.comboEvent.getSectionShape(c))
# ...