在我的程序中有一个复杂的计算,需要用户评估中间结果。这在命令行应用程序(这是我现在的代码看起来像)中运行良好,因为交互式提示会暂停程序执行,直到用户点击进入。命令行代码如下所示:
def calculate(starting):
result1 = initial_calculation(starting)
user_input1 = input("What is your choice for " + result1 + "?")
result2 = calculate1(user_input1)
user_input2 = input("What is your choice for " + result2 + "?")
result2 = calculate2(user_input2)
#...etc
我希望通过使用GUI提供比命令行更直观的界面,并允许用户点击指示他们选择的按钮而不是输入。我想象的是:< / p>
def do_something(starting):
result1 = initial_calculation(starting)
#wait for user to press a button indicating their choice?
result2 = calculate1(clicked_button.user_input1)
label.text("What is your choice for " + result1 + "?")
#wait for user again
result2 = calculate2(clicked_button.user_input2)
#...etc
有没有办法可以暂停执行计算的程序代码,然后在用户点击按钮后恢复代码?我不确定如何在这里引发或处理事件,因为通常在GUI中控制回调是代码执行的起点,但是在这里,代码从别处开始,需要从GUI中恢复并从GUI恢复。
(如果它有所不同,我使用的是Python和wxPython。)
答案 0 :(得分:2)
一般解决方案:
flag = false;
你的主题:
while (!flag); // wait here, consume cpu doing nothing
gui thread:
void OnInputEvent() { flag = true; }
答案 1 :(得分:1)
我不是python程序员,但一般来说这意味着你需要偶尔等待GUI线程,直到该线程收到用户的输入。
可能有一个更简洁,pythonesque api可用,但你当然可以使用raw python events。