在基于Python文本的GUI(TUI)中输入

Col*_*ndz 5 python user-interface

我一直在尝试在python 2.7中创建自己的基于文本的UI,但我想到了关于输入的想法.所以我想到这样的东西:input = raw_input("|" + "input: ".center(78) + "|")但是粗糙的,光标远在右边(只是意识到它在我输入之前不会起作用:P).所以,问题是,如何在屏幕中间放置一个输入文本在同一行(两侧),并在我写"输入:"之后使用光标类型?如果你想知道,我使用这个:

if True:
    print c + "Hi! This is a text-based GUI!".center(78, h) + c
    print c + "-" * 78 + c
    print v + "OPTIONS".center(78) + v
    print c + "-" * 78 + c
    print v + "1 - Quit".center(78) + v
    for i in range(1, 7):
        print v + " " * 78 + v
    print c + "-" * 78 + c
Run Code Online (Sandbox Code Playgroud)

在翻译中它看起来像样:

+------------------------Hi! This is a text-based GUI!-------------------------+
+------------------------------------------------------------------------------+
|                                   OPTIONS                                    |
+------------------------------------------------------------------------------+
|                                   1 - Quit                                   |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
+------------------------------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

注意:我使用的是Windows XP

Pet*_*ain 13

这种文本UI需要的是一个终端库,它了解屏幕的基本布局和功能以及支持的输入设备.

在Linux(或OSX)上,广泛认可的标准是ncurses.Python提供了一个包装此本机库的模块.但是,这个(以及使用它的任何软件包 - 例如urwid)在Windows上的用途有限.

在您的情况下,您需要使用其他提供对本机Win32控制台API的访问权限的东西.这可能是cygwin,PDcurses的自定义安装,或类似的包pywin32.

或者,如果您真的不想担心所有操作系统特定的废话,您可以只安装asciimatics.这提供了一个跨平台的API,用于将文本放置在屏幕上的任何位置并处理键盘输入.此外,它提供了更高级别的小部件来创建文本UI,如下所示:

文本UI小部件

完全披露:是的 - 我是这个包的作者.


roo*_*ook 6

还尝试有用的curses高级框架urwid.有了这个东西,你可以做丰富多彩的界面.按钮,编辑字段,甚至状态栏进度条以及您需要的所有内容.要开始工作,您只需curses安装Python 并urwid使用其源文件夹(您可以将整个urwid库与您的应用程序一起作为独立的捆绑包传输!).它甚至可以在cygwinWindows XP/7下运行,据我们所知,它没有curses端口Python.

urwid 投资组合

没有更低级,有时很无聊curses:)