这是两个脚本的故事,与之前的问题有关.
这两个脚本位于http://gist.github.com/50692.ansi.rb脚本在所有256种背景颜色上显示所有256种颜色.ncurses.rb脚本显示所有256种前景色,但背景显示基本色16,然后似乎循环浏览各种属性,如闪烁和反向视频.
什么给出了什么?这是ncurses中的错误,它使用有符号整数来表示颜色对吗?(即'tput colors'表示256但'tput对'表示32767而不是65536)似乎是这样的情况下,前半部分颜色对会正确显示,但后半部分会重复或进入属性作为int包装.
我正在编写一些返回整数的代码,然后需要使用ncurses库中的printw输出.但是,由于printw只接受char*,我无法弄清楚如何输出它.
基本上,有没有办法将整数存储到char数组中,或使用printw输出整数?
当curses处于活动状态时,stdout和stderr会去哪里?
import curses, sys
def test_streams():
print "stdout"
print >>sys.stderr, "stderr"
def curses_mode(stdscr):
test_streams()
test_streams()
curses.wrapper(curses_mode)
Run Code Online (Sandbox Code Playgroud)
实际输出是
stdout
stderr
Run Code Online (Sandbox Code Playgroud)
预期的产出是
stdout
stderr
stdout
stderr
Run Code Online (Sandbox Code Playgroud)
进入,然后退出curses模式,不更改终端中显示的最终文本.
我有一个运行正常的Curses应用程序.它可以很好地调整术语的大小,一切都很好.唯一的问题是,当endwin()调用它时,它会将终端重置为原始大小.IE,我正在使用该应用程序,我调整了我的术语,我退出了应用程序,我的术语又恢复到原始大小.
我需要做些什么来防止这种情况发生?
谢谢.
我写了一个小node.js netServer聊天应用程序.我想为它创建一个ncurses用户界面.问题是,聊天应用程序是服务器端编写的,人们通过netcat连接,所以问题是如何通过它来操作客户端的ncurses?
我已经和C一起工作了一段时间,并且对简单的命令行界面非常熟练.我也玩过这个curses库,对于终端应用来说,不仅仅是写文本stdout.但是,我无法弄清楚中途点的位置 - 应用程序喜欢wget或make拥有,例如,更新他们输出的文本的能力(如wget弹跳下载计量器和进度条),而不占用整个屏幕.
这种界面是我应该使用curses的,还是介于两者之间?优选地是跨平台的.
作为一个学习项目,我想开始为我想到的程序制作一个基于ncurses的UI,用python编写.
在查看了urwid文档之后,我无法看到创建一个可以使用鼠标调整的简单滑块(我需要它来制作音量滑块).
我在urwid中遗漏了什么,或者是否有更方便的curses模块来制作这样的滑块?
我似乎无法让ncurses pad在python(2.6,2.7和3.2)中工作.直接使用http://docs.python.org/howto/curses.html上的代码我甚至无法让它工作.非填充代码非常有效.
import curses
def func(scr):
pad = curses.newpad(100, 100)
pad.addstr(0,0, "Testing")
# Displays a section of the pad in the middle of the screen
pad.refresh( 0,0, 5,5, 10,10)
scr.refresh()
scr.getch()
if __name__ == '__main__':
curses.wrapper(func)
Run Code Online (Sandbox Code Playgroud)
问题是什么?移除垫(并将垫更换为scr)工作正常
我在python中编写了一个curses程序.它运行正常.但是,当我使用时nodelay(),程序在终端启动后立即退出,根本没有显示(只是一个新提示).
编辑
此代码将重现该错误:
sc = curses.initscr()
sc.nodelay(1) # But removing this line allows the program to run properly
for angry in range(20):
sc.addstr(angry, 1, "hi")
这是我的完整代码
import curses, time, sys, random
def paint(x, y, i):
#...
def string(s, y):
#...
def feed():
#...
sc = curses.initscr()
curses.start_color()
curses.curs_set(0)
sc.nodelay(1) #########################################
# vars + colors inited
for angry in range(20):
try:
dir = chr(sc.getch())
sc.clear()
feed()
#lots of ifs
body.append([x, y])
body.pop(0)
for point in body:
paint(*point, i=2)
sc.move(height-1, …