【问题标题】:Choose databits from combobox从组合框中选择数据位
【发布时间】:2019-08-28 08:32:08
【问题描述】:

我有一个简单的 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))

然后我运行代码,从 databits 组合框中选择一个选项(这就是我从组合框获取数据的方式)

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

当我按下连接按钮时,我得到了这个错误:

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

【问题讨论】:

    标签: python pyqt pyqt5 qcombobox qtserialport


    【解决方案1】:

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

    【讨论】:

    • 现在我得到这个错误:对于文本,数据位中的数据位:ValueError:没有足够的值来解包(预期 2,得到 1)
    • @Vesa95 你使用的代码和我的一样吗?我没有使用 OrderedDict
    • 你说得对,对不起,这是我的错误,我没有注意到你删除了 OrderedDict。非常感谢@eyllanesc!现在它运行完美!
    猜你喜欢
    • 2021-02-23
    • 1970-01-01
    • 2019-09-18
    • 1970-01-01
    • 1970-01-01
    • 2021-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多