You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 09:45:01