在基于Python文本的GUI(TUI)中输入
我一直在尝试在Python2.7中创建自己的基于文本的UI,但我想到了一个关于输入的想法。所以我的计算是这样的:在基于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!
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 XPinput()
函数对于这类任务来说并不复杂
最好使用可以控制Unix终端的库,例如。该库基本上允许您构建一个简单的终端GUI
如果你需要更多,也可以看看。Urwid为有眼光的终端GUI开发人员提供了更复杂的GUI小部件
不幸的是,您不能在Windows上使用
诅咒模块;显然有DOS和OS/2端口,但它主要是一个仅限POSIX的库。在Windows上,您必须使用端口,例如,或者您可以尝试(后者以类似的方式驱动Windows CMD控制台)。对于良好的基于文本的ui,您可以使用诅咒
还可以尝试在诅咒
高层框架上构建有用的框架。有了它,你可以制作丰富多彩的界面。按钮、编辑字段、甚至状态栏和进度栏以及所有您需要的内容。要开始工作,您只需要安装Pythoncurses
,并将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邮件系统。它需要大量的管道和“小部件”开发(当时我甚至不知道这个术语),才能使它变得不平凡。