Почему мне нужно выполнить getch(), прежде чем ncurses что-нибудь отобразит?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему мне нужно выполнить getch(), прежде чем ncurses что-нибудь отобразит?

Сообщение Anonymous »

У меня есть приложение Curses с циклом getch().
Я обнаружил, что приложение будет отображаться только после принятия пользовательского ввода. Другими словами, я не мог ничего нарисовать на терминале до принятия пользовательского ввода; Мне пришлось сделать это после. Этот код исправляет это:

Код: Выделить всё

stdscr.nodelay(True)
while stdscr.getch() != -1:
pass
stdscr.nodelay(False)
Но это не займет много времени... просто запустив одну функцию getch() и отбросив возвращаемое значение, ncurses сможет выполнить свою работу и отобразить экран так, как задумано. . Без этого на консоль ничего не отрисовывается (кроме, возможно, пустого экрана)!
Что случилось?
Изменить >
Мне посоветовали включить минимально воспроизводимый пример. Этот код здесь:
импортировать проклятия
def main(stdscr):
# Инициализировать ncurses
curses.curs_set(1) # Показать курсор
stdscr.clear()
# Получить размеры экрана
height, width = stdscr.getmaxyx()
input_win_height = 4
output_win_height = высота — input_win_height — 1

Код: Выделить всё

# Create windows
input_win = curses.newwin(input_win_height, width, 0, 0)

currentCommand=""
max_height, max_width = input_win.getmaxyx()
outputRow=0

inData={"row": 2, "col":1,"window":input_win}

#stdscr.nodelay(True)
#stdscr.getch()  # Drain the input buffer
#stdscr.nodelay(False)

def setCommandWindow(inData):
inData["row"]=2
inData["col"]=1+1
inData["window"].clear()
inData["window"].box()
inData["window"].addch(2,1, ">")
inData["window"].refresh()

setCommandWindow(inData)

while True:
key = stdscr.getch()
setCommandWindow(inData)

print("Quitting the application")
if __name__ == "__main__":
curses.wrapper(main)
Если вы раскомментируете эти строки, он запустится и нарисует рамку. Если вы не раскомментируете эти строки, он запустится на пустом экране и отобразит рамку только после получения символа.

Подробнее здесь: https://stackoverflow.com/questions/792 ... y-anything
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Почему мне нужно выполнить getch(), прежде чем ncurses что-нибудь отобразит?
    Anonymous » » в форуме Python
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Почему мне нужно выполнить getch(), прежде чем ncurses что-нибудь отобразит?
    Anonymous » » в форуме Python
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Ошибка «Неопределенные символы для архитектуры x86_64» при использовании метода ncurses getch() в C++ [дубликат]
    Anonymous » » в форуме C++
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Неблокирующие ncurses getch () в Java ffm
    Anonymous » » в форуме JAVA
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Не блокирующие ncurses getch () в Java ffm [закрыто]
    Anonymous » » в форуме JAVA
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»