Как прокрутить до конца wxTextCtrl и перерисовать экран - PullRequest
0 голосов
/ 25 марта 2019

У меня есть wxTextCtrl со многими строками текста с включенными полосами прокрутки.Внутри события я бы хотел прокрутить до конца элемента управления и перерисовать элемент управления.

Вот что у меня есть:

    def event_scroll_to_end(self, event):
        self.m_textCtrl1.SetScrollPos(
            wx.VERTICAL,
            self.m_textCtrl1.GetScrollRange(wx.VERTICAL))
        event.Skip()

Это прокручивает до конца и обновляет / перерисовываетсама полоса прокрутки, но она не обновляет textCtrl, который по-прежнему показывает прокрутку до ее текущей позиции.

Как я могу на самом деле прокрутить textCtrl, так что содержимое прокручивается до конца, как иполоса прокрутки указывает?

Ответы [ 3 ]

1 голос
/ 25 марта 2019

Я подозреваю, что вам нужно установить точку вставки, если вы хотите поместить курсор в конец текста, например

def event_scroll_to_end(self, event):
    self.m_textCtrl1.SetScrollPos(
        wx.VERTICAL,
        self.m_textCtrl1.GetScrollRange(wx.VERTICAL))
    self.m_textCtrl1.SetInsertionPoint(-1)
    event.Skip()

. Используйте SetInsertionPoint(0), чтобы позиционировать себя в начале текста.

0 голосов
/ 18 июля 2019

Я тоже с этим боролся.В итоге у меня сработало следующее:

    mywindow.SetInsertionPoint(-1)
    mywindow.ShowPosition(mywindow.GetLastPosition())
    mywindow.Refresh()
    mywindow.Update()
0 голосов
/ 25 марта 2019

Функцию ShowPosition можно использовать для прокрутки до конца, показывая последнюю позицию буфера.

    def event_scroll_to_end(self, event):
        self.m_textCtrl3.ShowPosition(self.m_textCtrl3.GetLastPosition())
        event.Skip()
...