如何使用Ruby的默认Curses库获取颜色?
所以类似于:
puts "\e[0m\e[30;47mtest\e[0m"
Run Code Online (Sandbox Code Playgroud)
效果很好.在浅灰色的背景上给出一个漂亮的黑色.但是这个:
#!/usr/bin/env ruby
require 'curses'
Curses.noecho # do not show typed keys
Curses.init_screen
Curses.stdscr.keypad(true) # enable arrow keys (for pageup/down)
Curses.stdscr.nodelay = 1
Curses.clear
Curses.setpos(0,0)
Curses.addstr "Hello!"
Curses.addstr "\e[0m\e[30;47mHello!\e[0m"
Run Code Online (Sandbox Code Playgroud)
显示:
你好!
^ [[0米^ [[30;!47mHello ^ [0米
最终,我需要颜色:
require 'curses'
Curses.noecho # do not show typed keys
Curses.init_screen
Curses.stdscr.keypad(true) # enable arrow keys (required for pageup/down)
loop do
case Curses.getch
when Curses::Key::PPAGE
Curses.setpos(0,0)
Curses.addstr("Page Up")
when Curses::Key::NPAGE
Curses.setpos(0,0)
Curses.addstr("Page Dn")
end
end
Run Code Online (Sandbox Code Playgroud)
在ruby源代码中有一些curses用法的例子,参见例如这里.
你的代码可能是这样的:
require 'curses'
include Curses
Curses.noecho # do not show typed keys
Curses.init_screen
Curses.stdscr.keypad(true) # enable arrow keys (required for pageup/down)
Curses.start_color
# Determines the colors in the 'attron' below
Curses.init_pair(COLOR_BLUE,COLOR_BLUE,COLOR_BLACK)
Curses.init_pair(COLOR_RED,COLOR_RED,COLOR_BLACK)
loop do
case Curses.getch
when Curses::Key::PPAGE
Curses.clear
Curses.setpos(0,0)
# Use colors defined color_init
Curses.attron(color_pair(COLOR_RED)|A_NORMAL){
Curses.addstr("Page Up")
}
when Curses::Key::NPAGE
Curses.clear
Curses.setpos(0,0)
Curses.attron(color_pair(COLOR_BLUE)|A_NORMAL){
Curses.addstr("Page Down")
}
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4207 次 |
| 最近记录: |