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

2024-04-19 15:01:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直试图在Python2.7中创建自己的基于文本的UI,但是我想到了一个关于输入的想法。所以我就这样想:input = raw_input("|" + "input: ".center(78) + "|"),但粗略地说,光标离右边很远(只是在我输入:P之前意识到它不起作用)。所以,问题是,我如何把一个输入放在屏幕中间,文本放在同一行上(两边),并在我写下“in put:”后使用光标类型?如果你想知道,我用这个:

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

在翻译中,它看起来不错:

+------------------------Hi! This is a text-based GUI!-------------------------+
+------------------------------------------------------------------------------+
|                                   OPTIONS                                    |
+------------------------------------------------------------------------------+
|                                   1 - Quit                                   |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
+------------------------------------------------------------------------------+

注意:我使用的是Windows XP


Tags: textin文本uiinputisguihi
3条回答

也可以尝试在curses高级框架^{}之上构建有用的。有了它,你可以做丰富多彩的界面。按钮编辑字段,甚至状态栏进度栏以及您所需要的一切。要开始工作,您只需要安装Pythoncurses,并使用带有其源文件的urwid文件夹(您可以将整个urwid库与应用程序作为独立的捆绑包一起传输!)。它甚至可以在Windows XP/7下的cygwin下工作,我们知道,这里没有Pythoncurses端口。

urwidportfolio

不再是低级的,有时非常无聊的curses:)

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

在Linux(或OSX)上,公认的标准是ncurses。Python提供了一个module来包装这个本机库。但是,这个(以及任何使用这个-例如urwid的包)在Windows上的使用是有限的。

在您的情况下,您需要使用其他提供对本机Win32控制台API的访问的工具。它可以是cygwin、PDcurses的自定义安装,也可以是类似于pywin32的包。

或者,如果你真的不想担心那些操作系统特有的废话,你可以直接安装asciimatics。这提供了一个cross-platform API来将文本放在屏幕上的任何位置并处理键盘输入。此外,它还提供更高级别的widgets来创建这样的文本ui:

Text UI widgets

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

对于这类任务,input()函数几乎不复杂。

最好使用能够控制Unix终端的库,比如^{} library。这个库本质上允许您构建一个简单的终端GUI。

如果你需要更多,也可以看看Urwid。Urwid为有眼光的终端GUI开发人员提供了更复杂的GUI小部件。

不幸的是,您不能在Windows上使用curses模块;显然有DOS和OS/2端口,但它主要是一个仅限POSIX的库。在Windows上,您必须使用^{}等端口,或者可以尝试^{} module(后者以类似的方式驱动Windows CMD控制台)。

相关问题 更多 >