如何保持编辑总是聚焦?

2024-10-01 00:17:13 发布

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

我用python+urwid编写了一个类似ircII的屏幕,在这里我有一个文本流,整个终端屏幕,加上底部的可编辑文本作为提示,让用户插入命令并按enter键。在

屏幕的主体是urwid.SimpleFocusListWalker,对于每一行新文本(例如命令响应),将创建一个新的urwid.Text。在

这段代码展示了我如何创建布局。在

self._widgetPromptText = urwid.Edit(self._textPrompt, initial_text)
self._widgetLinesList = urwid.SimpleFocusListWalker([])
self._widgetBufferListBox = urwid.ListBox(self._widgetLinesList)

self._w = urwid.Frame(header=self._widgetHeader,
                         body=self._widgetBufferListBox,
                         footer=self._widgetPromptText,
                         focus_part="footer")

好的,现在的问题是,当我的终端窗口失去焦点时,我再次单击它,通过单击xterm窗口的标题栏,或者直接单击作为用户输入命令的底部urwid.Edit,一切都正常。在

但是,如果我单击xterm窗口的屏幕,底部的urwid.Edit将失去焦点,因此也会丢失光标。我必须再次单击urwid.Edit使光标再次出现,并能够写入。 似乎当我用鼠标点击屏幕时,urwid会从底部urwid.Edit离开焦点,并将其交给urwid.SimpleFocusListWalker或{},除非我用鼠标点击它,否则无法将焦点放回urwid.Edit。在

我绝对不想这样! 我怎样才能告诉urwid不要把焦点放在urwid.SimpleFocusListWalker或{},或者只是在其中一个得到了urwid.Edit的时候把焦点放在{}?在

更重要的是,我希望能够告诉urwid不要离开我用来写命令的urwid.Edit离开焦点。在

有什么帮助吗?!在


Tags: 用户文本命令self终端屏幕edit焦点
1条回答
网友
1楼 · 发布于 2024-10-01 00:17:13

嗯,看来我已经可以通过在类中添加以下代码来解决错误:

def mouse_event(self, size, event, button, col, row, focus):
    pass

现在,当我点击终端的表面,光标不再消失。 这正是我要找的。在

相关问题 更多 >