gpt4 book ai didi

python - 如何将输入栏保留在屏幕 urwid 的底部

转载 作者:太空宇宙 更新时间:2023-11-04 00:19:40 31 4
gpt4 key购买 nike

我正在用 Python 开发一个聊天程序,想为我的客户端添加一些用户友好的界面。事实是我给了自己挑战仅使用终端。

所以我找到了可以使用的 urwid 模块,它是跨平台的并且在网上有详细的文档。

看完模块的手册和教程后,我真的不知道如何编写这个界面,但我获得了一些理论知识(Widgets,不同类型的对象,屏幕如何分区......)

所以我最终在 stackoverflow 或 github 上找到了一些代码片段,我找到了一个 listBox 示例,它对屏幕的日志保存部分确实有帮助。

现在我需要在底部创建一个永久输入区域来接收用户的输入。我没有找到关于如何执行此操作的任何代码或讨论。 如何在底部创建一个永久输入区域来接受用户的输入?

任何链接或代码示例将不胜感激! :)

谢谢大家艾略特

最佳答案

tutorial有几个自包含的示例来演示一些基本功能。

对于简单的方法,我可能建议使用 Frame对象,focus_part 设置为 'footer'。将提示文本移动到主窗口的基本示例:

import urwid

text_str = 'Here are a few previous lines.of text that populate.the main terminal window.Press "return" to add the prompt line to the main window.or press escape to exit.'.replace('.', '\n')

def main():
my_term = MyTerminal()
urwid.MainLoop(my_term).run()


class MyTerminal(urwid.WidgetWrap):

def __init__(self):

self.screen_text = urwid.Text(text_str)
self.prompt_text = urwid.Edit('prompt: ', '')
self._w = urwid.Frame(header=urwid.Pile([urwid.Text('header text'),
urwid.Divider()]),
body=urwid.ListBox([self.screen_text]),
footer=self.prompt_text,
focus_part='footer')

def keypress(self, size, key):
if key is 'esc':
raise urwid.ExitMainLoop()
if key == 'enter':
self.screen_text.set_text(self.screen_text.text +
'\n' +
self.prompt_text.edit_text)
self.prompt_text.edit_text = ''
return
super(MyTerminal, self).keypress(size, key)

main()

关于python - 如何将输入栏保留在屏幕 urwid 的底部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49679756/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com