Python 控制台应用程序设计状态和交互
Python console application design status and interactive
我有一个固定的 2 小时工作(四个 30 分钟的部分),我想从 Python 控制台应用程序中的菜单选项开始,我正在寻找设计帮助。
当用户单击菜单选项开始作业时,我想在作业 运行ning 时给出某种状态。也许为每个部分显示 30 分钟的倒计时。
我希望能够通过菜单选项(而不是键盘中断)取消作业。
因此程序的交互部分仍然允许用户在作业 运行ning 时检查其他菜单选项。
我最初的问题如下。我知道我可以研究其中的大部分,但我想知道我是否在问自己正确的问题。
- 作业是否需要在后台 运行?如果是这样,我怎样才能在后台取消某些东西?
- 启动后台的最佳方式?
- 我可以显示 30 分钟倒计时,同时仍保持交互性吗?
粗略图:
Running Jobs:
Job 1: 29:30 time left
Interactive console menu:
1. Start Job 1 - started
2. Do other things
3. Exit
我找到 npyscreen very helpful for easily creating nice console apps. Look at the keybindings section 来了解如何设置密钥处理程序。
背景部分比较简单。有很多像 Twisted, gevent and Tornado that provide event loop support. You can use their event loop to get the job running in the background. There is also library like schedule 这样的库可以进行类似 cron 的作业调度。
保持交互性是困难的部分。您必须使用 subprocess
或 threading
来启动作业以保持终端交互。要显示倒计时,您可能需要使用像 urwid or npyscreen.
这样的 curses 库
我有一个固定的 2 小时工作(四个 30 分钟的部分),我想从 Python 控制台应用程序中的菜单选项开始,我正在寻找设计帮助。
当用户单击菜单选项开始作业时,我想在作业 运行ning 时给出某种状态。也许为每个部分显示 30 分钟的倒计时。
我希望能够通过菜单选项(而不是键盘中断)取消作业。
因此程序的交互部分仍然允许用户在作业 运行ning 时检查其他菜单选项。
我最初的问题如下。我知道我可以研究其中的大部分,但我想知道我是否在问自己正确的问题。
- 作业是否需要在后台 运行?如果是这样,我怎样才能在后台取消某些东西?
- 启动后台的最佳方式?
- 我可以显示 30 分钟倒计时,同时仍保持交互性吗?
粗略图:
Running Jobs:
Job 1: 29:30 time left
Interactive console menu:
1. Start Job 1 - started
2. Do other things
3. Exit
我找到 npyscreen very helpful for easily creating nice console apps. Look at the keybindings section 来了解如何设置密钥处理程序。
背景部分比较简单。有很多像 Twisted, gevent and Tornado that provide event loop support. You can use their event loop to get the job running in the background. There is also library like schedule 这样的库可以进行类似 cron 的作业调度。
保持交互性是困难的部分。您必须使用 subprocess
或 threading
来启动作业以保持终端交互。要显示倒计时,您可能需要使用像 urwid or npyscreen.