我正在尝试使用Kivy迁移从PyQt编写的代码,但是我无法想象出解决方案。
我有数千行代码使用Qt的对话框进行文本输入。也就是说,当达到他们的代码行时,他们会"停止"脚本直到按下"确定"按钮,以便返回文本输入。
Kivy没有这个功能,因此理想情况下,当程序需要用户输入时,"确定"按钮将调用下一个要运行的函数。
因此,我必须用一个函数来替换所有当前对PyQt函数的调用,该函数可以停止正在运行的脚本,启动工作响应的对话框,然后在它请求的文本输入可用时恢复原始脚本。所以问题是:
有没有一种方法可以停止正在运行的脚本,直到函数完成,而不会挂起GUI?
我已经尝试过:
- 线程:
即使我在新的线程中启动文本输入:
t = threading.Thread(target=TextInput.waiter)
调用此线程的函数将在调用文本输入后立即返回。 如果我使用以下代码:
t.start()
t.join()
主要脚本将停止,但同时也挂起了文本输入GUI。
- While/Sleep:等待文本输入变量包含有效结果,但这会阻塞在Kivy中进行的文本输入GUI。 - 通过黑客手段修改raw_input:目前考虑尝试某些黑客手段,这样可以停止脚本,然后反馈由Kivy文本输入弹出窗口找到的输入。
如果有任何建议,欢迎提出,感谢您的阅读。
yield
语句暂停。 - kitti