我正在编写的程序一次可以编辑一个项目。这意味着打开一个新文件/项目意味着关闭前一个文件/项目。现在我想要实现的是以下工作流程:
- 用户对以前从未保存过的项目有未提交的更改,因此该项目还没有文件名
- 用户按下"打开已保存的项目"
- 弹出一个对话框"A":"您当前的项目有未提交的更改,您想怎么办?中止新的项目操作,放弃对当前项目的更改,还是保存它们?"
- 用户选择"保存"对话框
- 对话A结束
- 弹出对话框B1(为保存操作配置的文件选择器)
- 用户为要保存的项目选择文件名
- 对话B1关闭,项目被保存
- 弹出对话B2(相同的文件选择器,但配置用于加载操作)
- 用户选择要打开的文件
- 对话B2关闭,项目加载
实际上,在上面的例子中,步骤3到8是打开已保存项目的明显工作流中的一种"中断",因此当对话a和B1打开时,明显的工作流会停止,当这些对话得到响应时,工作流会恢复。
我的问题是:如何实施这种停止/恢复正常运作的机制?到目前为止,我实现它的方式是通过一个堆栈,每当我打开弹出对话框时,我都会在堆栈上按下"从这里恢复回调",每当我做出响应时,我就会从中弹出回调。
然而,我的场景似乎是一个非常常见的场景,应该有一个更简单的方法(也许是PyGTK的一个特定函数!)。
非常感谢您的帮助/时间!
GtkDialog.run()
是您需要的方法吗?您"运行"对话框,在需要询问用户的地方,当它返回时,您就有了答案。