使用CharLCD显示温湿度数据时遇构造函数无参数错误求助
解决RPLCD CharLCD构造函数参数错误问题
这个问题我之前在树莓派做温湿度显示项目时也踩过一模一样的坑!报错的核心原因是你用的RPLCD库版本和代码写法不匹配——新版RPLCD(v0.4.0及以后)重构了API,把硬件相关的实现从CharLCD抽象类里拆分出来了,直接实例化CharLCD自然会提示构造函数不接受参数。
具体修正步骤:
调整导入语句:
原来的from RPLCD import CharLCD要替换成对应硬件连接方式的具体类,如果你用的是GPIO接线的LCD,就导入GPIOCharLCD:from RPLCD.gpio import GPIOCharLCD替换实例化代码:
把原来的CharLCD实例化改成GPIOCharLCD,你之前写的引脚、行列数参数完全可以保留:lcd = GPIOCharLCD(cols=16, rows=2, pin_rs=37, pin_e=35, pins_data=[33, 31, 29, 23])
完整修正后的代码示例:
import sys import Adafruit_DHT from RPLCD.gpio import GPIOCharLCD # 初始化LCD(用GPIOCharLCD替代原来的CharLCD) lcd = GPIOCharLCD(cols=16, rows=2, pin_rs=37, pin_e=35, pins_data=[33, 31, 29, 23]) while True: humidity, temperature = Adafruit_DHT.read_retry(11, 4) lcd.clear() # 清屏准备刷新新数据 if humidity is not None and temperature is not None: # 第一行显示温度 lcd.write_string(f"Temp: {temperature:.1f}°C") # 切换到第二行开头位置 lcd.cursor_pos = (1, 0) # 第二行显示湿度 lcd.write_string(f"Humidity: {humidity:.1f}%") else: lcd.write_string("Sensor Read Fail!")
补充说明:
如果你的RPLCD是旧版本(v0.3.x及更早),原来的代码写法是有效的,但新版库为了支持更多硬件后端(比如I2C、SPI),将CharLCD改为抽象基类,必须使用对应后端的具体实现类(比如I2C连接的LCD要用I2CCharLCD)。
内容的提问来源于stack exchange,提问作者wonkyu lee
相关产品推荐
相关产品推荐

