Pygame封装通用文本框获取输入并存储到MySQL数据库问题求助
解决方案
你封装的inputBox组件已原生支持获取输入内容,无需修改组件文件,直接在主页面next按钮的触发逻辑中读取实例的公开text属性即可,操作如下:
1. 替换主页面register函数的next按钮逻辑
原逻辑点击next直接退出,修改为先取数再执行MySQL存储:
if next_button.draw(screen): # 直接从文本框实例取text属性,即为用户输入内容 first_name = input_box1.text second_input = input_box2.text # 按需对应你的业务字段 # MySQL存储逻辑,替换为你自己的数据库配置 try: db = mysql.connector.connect( host="localhost", user="数据库用户名", password="数据库密码", database="数据库名" ) cursor = db.cursor() # 替换为实际表名和字段名 sql = "INSERT INTO 表名 (first_name, 第二个字段名) VALUES (%s, %s)" val = (first_name, second_input) cursor.execute(sql, val) db.commit() print(f"数据插入成功,ID:{cursor.lastrowid}") except Exception as e: print(f"存储失败:{e}") db.rollback() finally: if db: db.close() # 存储完成后按需执行跳转或退出 sys.exit()
2. 可选批量取数优化(不影响组件通用性)
如果需要统一处理多个文本框,可在主页面初始化时给文本框实例增加自定义业务属性,不需要修改组件文件:
input_box1 = Test.inputBox(210, 105, 140, 32, "First Name: ") input_box1.field = "first_name" input_box2 = Test.inputBox(210, 160, 140, 32) input_box2.field = "contact" # 遍历即可批量生成结构化数据 form_data = {box.field: box.text for box in input_boxes}
实现原理
inputBox类处理键盘输入时,已经将用户输入的内容实时更新到实例的公开text属性中,主页面持有实例引用即可直接读取,不需要额外修改组件代码,完全符合通用组件复用的要求。
内容的提问来源于stack exchange,提问作者Sleepingsouls
相关产品推荐
相关产品推荐

