PyQt:按下按钮时从combobox中获取值

2024-06-16 13:40:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我用qt设计器把它从*.ui转换成*.py,我想用它来发送和接收串行数据

我使用组合框来设置串行通信

    self.ui.comboBox_2.addItems(['2400','4800','9600','19200'])

我的问题是,当我单击一个按钮时,如何从combobo_2中获取值来填充串行buadrate

这是我的密码

^{pr2}$

然后得到一个错误

File "mainw.py", line 18, in press_2 self.connect(self.ui.comboBox_2, QtCore.SIGNAL('activated(QString)'),ser.baudRate()) AttributeError: 'Serial' object has no attribute 'baudRate'


Tags: 数据pyselfui密码错误qt按钮
1条回答
网友
1楼 · 发布于 2024-06-16 13:40:35

关于使用按钮从组合框中获取值的问题与您当前所做的不同,即在选择组合框中的值时直接使用信号。在

你的错误与其他东西有关,在你的信号中你似乎在调用一个函数。”波特率()“但是您必须传入一个函数对象,因为它将传入任何对象”布阿德拉特爵士()”返回。可能不是函数。我不确定那个函数返回什么。无论如何,这里有一些想法:

使用按钮 如果你想使用按钮,那么你可以这样写:

self.connect(self.ui.myButton, QtCore.SIGNAL('clicked()'), self.updateBaudRate)
def updateBaudRate(self):
    # get value from combo box
    rate = str(self.ui.comboBox_2.currentText()) # convert to string otherwise you will get a QString which is sometimes not friendly with other tools
    ser.baudRate(rate)

使用组合框信号

^{pr2}$

您可以使用functools模块中的partial,或者使用lambda来代替为信号编写函数,但这只是一个示例。在

您可能还需要使用“currentIndexChanged”信号而不是“activated”,因为“currentIndexChanged”只在值发生更改时才会发出信号,否则即使用户没有在组合框中选择其他值,它也会发出信号。在

相关问题 更多 >