global portName portName = self.comboBox_uart.currentText() global baud baud = self.comboBox_baud.currentText() self.serial = serial.Serial(portName, baud)报错self.serial_child = serial.Serial(portName, baud) NameError: name 'portName' is not defined
时间: 2024-03-15 15:47:32 浏览: 72
在使用 `global` 声明变量之后,你需要在方法内部先对变量进行赋值,才能够在其他方法中使用。在你的代码中,`portName` 和 `baud` 都是在方法内部首次被赋值的,因此在其他方法中使用时会出现 `NameError`。
解决方法是在方法内部先给 `global` 变量赋一个默认值,然后再从控件中获取实际的值进行更新。修改后的代码应该如下所示:
```python
portName = "" # 全局变量
baud = "" # 全局变量
class MyClass:
def __init__(self):
self.comboBox_uart = QComboBox()
self.comboBox_baud = QComboBox()
global portName, baud
portName = self.comboBox_uart.currentText()
baud = self.comboBox_baud.currentText()
self.serial = serial.Serial(portName, baud)
def some_method(self):
global portName, baud
portName = self.comboBox_uart.currentText()
baud = self.comboBox_baud.currentText()
self.serial = serial.Serial(portName, baud)
```
这样,在 `__init__` 方法中先对 `portName` 和 `baud` 进行了赋值,然后在其他方法中更新变量的值即可。注意,使用 `global` 声明变量之后,在其他方法中也需要再次使用 `global` 声明,才能够访问全局变量。
阅读全文