Выберите базы данных из выпадающего списка - PullRequest
1 голос
/ 06 апреля 2019

У меня есть простой графический интерфейс для последовательной связи с Arduino UNO.Сначала я перечисляю все данные в OrderedDict, затем помещаю их в поле со списком:

self.databits = OrderedDict([
            ('5', QtSerialPort.QSerialPort.Data5),
            ('6', QtSerialPort.QSerialPort.Data6),
            ('7', QtSerialPort.QSerialPort.Data7),
            ('8', QtSerialPort.QSerialPort.Data8)
        ])
        self.databit_comboBox.addItems(list(self.databits))

Затем я запускаю код и выбираю опцию из списка со списком данных (таким образом я получаю данные из списка))

self.serial.setDataBits(self.databit_comboBox.currentData())

и когда я нажимаю кнопку подключения, я получаю эту ошибку:

TypeError: setDataBits(self, QSerialPort.DataBits): argument 1 has unexpected type 'NoneType'

1 Ответ

2 голосов
/ 06 апреля 2019

Когда вы добавляете данные методом addItems(), вы добавляете только текст, поэтому вы отбрасываете вторую часть. Решение состоит в том, чтобы повторить и отделить каждую часть:

databits = [
        ('5', QtSerialPort.QSerialPort.Data5),
        ('6', QtSerialPort.QSerialPort.Data6),
        ('7', QtSerialPort.QSerialPort.Data7),
        ('8', QtSerialPort.QSerialPort.Data8)
]
for text, databit in databits:
    self.databit_comboBox.addItem(text, databit)

# ...

self.serial.setDataBits(self.databit_comboBox.currentData())
...