if flag_uart == False: QMessageBox.information((self ,"提示","未连接到串口", QMessageBox.Ok | QMessageBox.Cancel))
时间: 2024-03-13 10:47:09 浏览: 25
在调用 QMessageBox.information() 函数时,你传递给它的第一个参数应该是一个 QWidget 类型的对象,而不是一个元组。因此,你需要将元组中的 self 参数解包,以便将 QWidget 对象传递给 QMessageBox.information() 函数。你可以像这样修改代码:
```python
if flag_uart == False:
QMessageBox.information(self, "提示", "未连接到串口", QMessageBox.Ok | QMessageBox.Cancel)
```
这样,你就可以将 QWidget 对象作为第一个参数传递给 QMessageBox.information() 函数了。
相关问题
def btn_uart_cb(self): try: if self.btn_uart.text() == "打开": self.btn_uart.setText("关闭串口") # 连接串口 global portName, baud, global_flag portName = self.comboBox_uart.currentText() baud = self.comboBox_baud.currentText() self.serial = serial.Serial(portName, baud) global_flag = 1 else: self.serial.close() # 关闭串口 global_flag = 0 self.btn_uart.setText("打开串口") except Exception as e: print(e)报错
这段代码中存在一些问题,可能导致串口连接失败。首先,请确保您已经正确导入了 `serial` 模块。其次,请确保您的串口名称和波特率设置正确。例如,串口名称应该是类似于 `"COM1"` 的字符串。如果您使用的是 Linux 系统,则串口名称应该是类似于 `"/dev/ttyUSB0"` 的字符串。此外,在连接串口之前,您需要先关闭其他程序对该串口的占用。最后,请确保您的串口驱动程序已经正确安装并且可以正常工作。如果问题仍然存在,请提供更详细的错误信息以便于排查问题。
import sys import serial from PyQt5.QtWidgets import QMainWindow, QApplication from aaa_main import Ui_MainWindow from aaa_child import Ui_ChildWindow import serial.tools.list_ports class Main(QMainWindow, Ui_MainWindow): def __init__(self): super(Main, self).__init__() self.setupUi(self) self.serial = serial.Serial() self.refresh() def refresh(self): plist = list(serial.tools.list_ports.comports()) if len(plist)<=0: self.comboBox_uart.clear() self.comboBox_uart.addItem("无串口") else: self.comboBox_uart.clear() for i in range(0, len(plist)): plist_0 = list(plist[i]) self.comboBox_uart.addItem(str(plist_0[0])) def btn_uart_cb(self): if not self.serial.isOpen(): self.btn_Open.setText("关闭串口") portName = self.comboBox_uart.currentText() baud = self.comboBox_baud.currentText() self.serial = serial.Serial(portName, baud) else: self.serial.close() self.btn_Open.setText("打开串口") class Child(QMainWindow, Ui_ChildWindow): def __init__(self): super(Child, self).__init__() self.setupUi(self) self.pushButton.clicked.connect(self.close) def Open(self): self.show() if __name__ == "__main__": app = QApplication(sys.argv) main = Main() child = Child() main.show() main.pushButton.clicked.connect(child.Open) sys.exit(app.exec_())
这段代码看起来比之前的代码没有问题,但是需要确认 `aaa_main.py` 和 `aaa_child.py` 这两个文件中定义的 `Ui_MainWindow` 和 `Ui_ChildWindow` 类是否存在,以及是否正确导入。如果这些类不存在或者导入错误,也会导致程序崩溃。另外,如果你在程序运行过程中出现错误,可以查看控制台输出的错误信息,以便更好地定位问题。