python - 从组合框中选择数据位

标签 python pyqt pyqt5 qcombobox qtserialport

我有一个简单的 GUI,用于与 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'

最佳答案

当您使用 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())

关于python - 从组合框中选择数据位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55552298/

相关文章:

python - 一旦我有主机名就比较文件

python - 根据是否选中 QCheckbox 获取表行值

python 2.6.1 : Checking if imports exist

c++ - 在拖动/调整窗口大小时在窗口上调用 isActive() 时,返回 false。 (X11, Qt 5.4.0)

python - 这段在 Pyqt 中创建 QPolygon 的代码正在停止我的应用程序!帮助?

python - PyQt5可检查组合框: display list of checked items

python - 如何能够在 QListWidgets 之间拖放项目并仍然能够使用拖放进行排序

python - 按性别拆分名单

python - QGraphicsItem 线宽/转换从 PyQt4 更改为 PyQt5

python - QtWebPageRenderer SIGILL 问题