#ruby #curses
#ruby #проклятия
Вопрос:
Первый 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:
То, что вы видите, является неявным refresh()
для окна stdscr — потому getstr()
что это действительно wgetstr(stdscr)
так. Ваши варианты включают:
- Обновление stdscr вручную перед рисованием чего-либо
- Использование вашего нового окна для ввода, а не stdscr, и / или
- Использование stdscr для вывода.
По крайней мере, это ответ, который я бы дал для родного C curses — я не уверен, как это переводится на Ruby.