Curses.getstr在第一次调用时清除窗口

时间:2014-06-18 11:14:42

标签: ruby curses

第一个Curses.getstr调用会清除另一个窗口。在以后的电话中,它不会发生。

require "curses"

Curses.init_screen

window = Curses::Window.new(10, 10, 5, 0)
window.scrollok true

Thread.new do
    loop do
        window.addstr rand(1000000).to_s
        window.refresh
        sleep 0.1
    end
end

Curses.setpos 20, 0
sleep 1
# now several lines of numbers suddenly disappear
loop{ Curses.getstr }

我该如何对抗这种行为?

1 个答案:

答案 0 :(得分:0)

您所看到的是stdscr窗口的隐式refresh() - 因为getstr()确实是wgetstr(stdscr)。您的选择包括:

  1. 在绘制任何内容之前手动刷新stdscr
  2. 使用新窗口输入,而不是使用stdscr和/或
  3. 使用stdscr输出。
  4. 至少,这就是我为curses的原生C提供的答案 - 我不确定它是如何转换为Ruby的。