/ / Curses.getstrは最初の呼び出しでウィンドウをクリーニングします-ruby、curses

Curses.getstrは最初の呼び出しでウィンドウを消去します - 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

あなたが見ているものは暗黙的です refresh() stdscrウィンドウの-なぜなら getstr() 本当に wgetstr(stdscr)。次のオプションがあります。

  1. 何かを描画する前にstdscrを手動で更新する
  2. stdscrではなく、入力に新しいウィンドウを使用する、および/または
  3. 出力にstdscrを使用します。

少なくとも、「それは私が呪いのために与える答え」ネイティブCです。