Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在基于Python文本的GUI(TUI)中输入_Python_User Interface - Fatal编程技术网

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

在基于Python文本的GUI(TUI)中输入,python,user-interface,Python,User Interface,我一直在尝试在Python2.7中创建自己的基于文本的UI,但我想到了一个关于输入的想法。所以我的计算是这样的:input=raw_input(“|”+”input:“.center(78)+“|”),但是粗略地说,光标在右边很远(我甚至在输入:P之前就意识到它不起作用)。所以,问题是,我如何在屏幕中间输入一个文本,在同一行上(两边),在写“输入:”之后有光标类型?如果你想知道,我用这个: if True: print c + "Hi! This is a text-based GUI!

我一直在尝试在Python2.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
在解释器中,它看起来很不错:

+------------------------Hi! This is a text-based GUI!-------------------------+
+------------------------------------------------------------------------------+
|                                   OPTIONS                                    |
+------------------------------------------------------------------------------+
|                                   1 - Quit                                   |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
+------------------------------------------------------------------------------+
注意:我使用的是Windows XP
input()
函数对于这类任务来说并不复杂

最好使用可以控制Unix终端的库,例如。该库基本上允许您构建一个简单的终端GUI

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


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

对于良好的基于文本的ui,您可以使用诅咒


还可以尝试在
诅咒
高层框架上构建有用的框架。有了它,你可以制作丰富多彩的界面。按钮、编辑字段、甚至状态栏和进度栏以及所有您需要的内容。要开始工作,您只需要安装Python
curses
,并将
urwid
文件夹及其源文件(您可以将整个
urwid
库作为独立包与应用程序一起传输!)。它甚至可以在Windows XP/7下的
cygwin
下工作,正如我们所知,那里没有
诅咒
Python的
端口

urwid


不再是低级的、有时非常无聊的咒骂了
:)

好吧,你所有的答案都很好,但我想我可以用它来输入,而不是第三方库:

c = "+"
h = "-"
print c + h*78 + c
inputa = raw_input(" "*32 + "Input example: ")
print c + h*78 + c

这对我来说很有用。

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

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

在您的情况下,您需要使用其他东西来提供对本机Win32控制台API的访问。这可能是cygwin,一个PDcurses的定制安装,或者是一个类似于
pywin32
的包

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


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

在最初的问题几年后添加了另一个选项。根据以下文件的作者:

Picotui是Python3的文本用户界面(TUI)小部件库。众所周知,它可以与CPython3和Pycopy(后者正式支持Unix版本)一起使用,但应该与任何允许访问stdin/stdout文件描述符的Python3实现一起使用


作者还将继续比较PicoTUI和Urwid。这里有一些有趣的观点。我希望使用PicoTUI的一个项目,我期待开始。诚然,没有第一手经验。在为我的TUI(基于文本的UI或基于终端的UI,在GUI意义上更为重要)Python库寻找答案时遇到了这个问题,因此考虑添加此选项。

控制台模块已过时,因此我无法使用它。您还可以轻松修改(感谢
Python
)为项目或教育需求提供源部件。尽管它对键盘输入的反应有点慢(就我测试过的情况而言),但我不得不说这是非常令人印象深刻的。谢谢分享,谢谢。您可能会看到(这基本上是因为我让其中一个演示超载)。如果没有,请随时在github上提出一个新问题。尝试一下,还有一个windows版本的“基于文本的GUI”有点矛盾:)是的,我真的应该称它为TUIThat,这确实是一个选项,唉,级别太低了——一个螺母和螺栓。我大学毕业后的第一个专业项目是一个相当大的Ncurses用户界面,用于大约22年前用C语言编写的X.400邮件系统。它需要大量的管道和“小部件”开发(当时我甚至不知道这个术语),才能使它变得不平凡。