python curses textpad блокирует обновления экрана - PullRequest
1 голос
/ 06 апреля 2020

Я использую проклятия в python 3.5.9 / raspian на Raspberry Pi 3b +. Я установил простое окно с полем ввода в одну строку, используя модуль curses.textpad. У меня также есть часы на экране в другом окне проклятий; он работает в собственной цепочке.

Когда появляется текстовая панель, часы исчезают. Когда я набираю текстовую панель, первый символ вызывает повторное появление часов, но они не обновляются и, кажется, остановились. Каждый последующий введенный символ приводит к обновлению часов, но только один раз для каждого символа. Я не верю, что поток часов заблокирован. Я думаю, что объект textpad не обновляет главное окно, когда он не получает символы. Вопрос в том, как заставить экран переосмыслить sh при блокировке текстового поля при вводе пользователем? Вот урезанный фрагмент кода:

    ...
    self.uiwin = curses.newwin(self.y,self.x,self.ybegin,int((curses.COLS-self.x)/2)) # small win.
    ...
    entrywin = self.uiwin.derwin(1,windowlength,2,windowpadding) # make a 1 line input field.
    entryfield = curses.textpad.Textbox(entrywin)
    entryfield.edit(self.__terminate_entry)
    entry = entryfield.gather()
    ...

... и метод terminate_entry:

    def __terminate_entry(self,ch):
        '''Replace tabs, linefeeds, formfeeds, carriage returns with ctrl+g'''
        if ch in (9,10,11,12,13,27,curses.KEY_BTAB):
            return 7    # ctrl+g terminates the textpad.
        else:
            return ch   # otherwise pass the character through.

Заранее благодарим за любые предложения / идеи.

...