关闭 Imgui window:这看起来应该很容易。如何做到这一点?
Closing an Imgui window: this seems like it should be easy. How does one do it?
我已经开始使用 imgui
系统来可视化“无论什么”。我刚开始工作的几个小时,运行 遇到了看似常见的障碍。
然而,虽然我可以看到对 C++ 版本的 ImGui(我最终会过渡到)的一些很好的支持,python imgui 内容大部分被遮盖了。
我正在寻找的是以下问题的解决方案:
while not glfw.window_should_close(window):
...
imgui.new_frame()
imgui.begin("foo-window", closable=True)
imgui.end()
一切正常。 但是,window 没有关闭。我知道 window 不会关闭,因为它总是在每个循环中创建。
我要找的是:
如何检测和识别特定的 window 已关闭,并阻止它重新生成?
我一点也不熟悉 Python 的 imGui,但如果它完全遵循与 imGui for c++ 类似的模式,那么你需要遵循这个模式:
static bool show_welcome_popup = true;
if(show_welcome_popup)
{
showWelcomePopup(&show_welcome_popup);
}
void showWelcomePopup(bool* p_open)
{
//The window gets created here. Passing the bool to ImGui::Begin causes the "x" button to show in the top right of the window. Pressing the "x" button toggles the bool passed to it as "true" or "false"
//If the window cannot get created, it will call ImGui::End
if(!ImGui::Begin("Welcome", p_open))
{
ImGui::End();
}
else
{
ImGui::Text("Welcome");
ImGui::End();
}
}
JerryWebOS 的回答基本上是正确的,但要补充的是 python 版本。请注意,pyimgui 的文档是找到此类问题答案的良好来源。
https://pyimgui.readthedocs.io/en/latest/reference/imgui.core.html?highlight=begin#imgui.core.begin
imgui.begin() returns 两个布尔值的元组:(展开,打开)。
您可以使用它来检测用户何时关闭 window,并相应地跳过在下一帧中渲染 window:
window_is_open = True
while not glfw.window_should_close(window):
...
imgui.new_frame()
if window_is_open:
_, window_is_open = imgui.begin("foo-window", closable=True)
...
imgui.end()
我已经开始使用 imgui
系统来可视化“无论什么”。我刚开始工作的几个小时,运行 遇到了看似常见的障碍。
然而,虽然我可以看到对 C++ 版本的 ImGui(我最终会过渡到)的一些很好的支持,python imgui 内容大部分被遮盖了。
我正在寻找的是以下问题的解决方案:
while not glfw.window_should_close(window):
...
imgui.new_frame()
imgui.begin("foo-window", closable=True)
imgui.end()
一切正常。 但是,window 没有关闭。我知道 window 不会关闭,因为它总是在每个循环中创建。
我要找的是:
如何检测和识别特定的 window 已关闭,并阻止它重新生成?
我一点也不熟悉 Python 的 imGui,但如果它完全遵循与 imGui for c++ 类似的模式,那么你需要遵循这个模式:
static bool show_welcome_popup = true;
if(show_welcome_popup)
{
showWelcomePopup(&show_welcome_popup);
}
void showWelcomePopup(bool* p_open)
{
//The window gets created here. Passing the bool to ImGui::Begin causes the "x" button to show in the top right of the window. Pressing the "x" button toggles the bool passed to it as "true" or "false"
//If the window cannot get created, it will call ImGui::End
if(!ImGui::Begin("Welcome", p_open))
{
ImGui::End();
}
else
{
ImGui::Text("Welcome");
ImGui::End();
}
}
JerryWebOS 的回答基本上是正确的,但要补充的是 python 版本。请注意,pyimgui 的文档是找到此类问题答案的良好来源。
https://pyimgui.readthedocs.io/en/latest/reference/imgui.core.html?highlight=begin#imgui.core.begin
imgui.begin() returns 两个布尔值的元组:(展开,打开)。 您可以使用它来检测用户何时关闭 window,并相应地跳过在下一帧中渲染 window:
window_is_open = True
while not glfw.window_should_close(window):
...
imgui.new_frame()
if window_is_open:
_, window_is_open = imgui.begin("foo-window", closable=True)
...
imgui.end()