如何使用curses删除文本直到行末

9
如何删除文本直到行尾?
stdscr.addstr(5, 5, "Egestas Curabitur Phasellus magnis")

结果屏幕:Egestas Curabitur Phasellus magnis # OK

意思是显示的结果是“Egestas Curabitur Phasellus magnis”,并且返回了OK。
stdscr.addstr(5, 5, "Elit metus")

结果屏幕:Elit metusrabitur Phasellus magnis#问题

意思是显示的结果屏幕中出现了问题,具体问题是“Elit metusrabitur Phasellus magnis”,需要进一步解决。

1
这里使用 curses 吗? - Bhargav Rao
看起来像是curses API - James Mills
3个回答

8

要删除到行尾(End Of Line),请使用 window.clrtoeol()

示例:

import curses

window = curses.initscr()
window.clrtoeol()
window.refresh()

我非常推荐在任何控制台/TUI编程中使用优秀的urwid。更新:Bhargav Rao是正确的,但您必须显式调用window.refresh():因此,curses要求您明确告诉它重绘窗口,使用窗口对象的refresh()方法。实际上,这并没有使程序与curses编程变得更加复杂。大多数程序会快速运行,然后暂停等待用户按键或其他操作。在暂停等待用户输入之前,你只需要确保屏幕已经被重新绘制,通过简单地调用stdscr.refresh()或其他相关窗口的refresh()方法即可。

3
如果您正在推荐使用urwid,可以考虑展示使用curses和urwid的完整示例来进行对比,以说明它们之间的差异。 - Thomas Dickey

2

在你的第二行代码之前,需要调用stdscr.refresh()。这在文档中已经明确说明。

你只需要简单地调用stdscr.refresh()来确保屏幕已经重新绘制,然后再暂停等待用户输入即可。


欢迎兄弟!谢谢。祝你有美好的一天。 - Bhargav Rao

1
在调用stdscr.addstr(5, 5, "Elit metus")之前使用stdscr.refresh()。这样就可以正常工作了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接