如何在PySimpleGui中无需点击按钮获取InputText()的输入?
无需按钮点击获取ImGui InputText()输入的方法
完全可以实现,核心是利用ImGui输入组件的实时绑定特性——InputText()会在用户输入过程中实时更新你绑定的变量,不需要依赖按钮触发就能获取输入内容。
实现步骤:
- 定义一个用于存储输入内容的变量(比如C++的
std::string或C的char数组)。 - 在ImGui渲染循环中,将
InputText()与这个变量绑定。 - 实时检查该变量是否为空,以此控制提交按钮的启用状态。
代码示例(C++):
#include "imgui.h" #include <string> // 全局或类成员变量 std::string userInput; void RenderUI() { ImGui::Begin("表单示例"); // 绑定输入框到userInput,输入时自动更新变量 ImGui::InputText("请输入内容", &userInput); // 根据输入是否为空,禁用/启用提交按钮 ImGui::BeginDisabled(userInput.empty()); if (ImGui::Button("提交")) { // 这里编写提交逻辑,比如处理userInput的内容 } ImGui::EndDisabled(); ImGui::End(); }
原理说明:
ImGui的InputText()组件在每帧渲染时都会同步用户的输入到绑定的变量中,用户每输入一个字符,变量就会立即更新。通过BeginDisabled()和EndDisabled()这对API,就能根据输入内容的状态动态控制按钮的可用性。
如果是使用C语言的char数组,写法类似:
char userInput[256] = ""; void RenderUI() { ImGui::Begin("表单示例"); ImGui::InputText("请输入内容", userInput, sizeof(userInput)); ImGui::BeginDisabled(strlen(userInput) == 0); if (ImGui::Button("提交")) { // 提交逻辑 } ImGui::EndDisabled(); ImGui::End(); }
内容的提问来源于stack exchange,提问作者F.M
相关产品推荐
相关产品推荐

