如何滚动到wxTextCtrl的底部并重绘屏幕

时间:2019-03-25 02:23:10

标签: wxpython wxtextctrl

我有一个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 个答案:

答案 0 :(得分:1)

我想如果要定位在文本的末尾,即需要设置插入点。

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)将自己置于文本的开头。

答案 1 :(得分:0)

ShowPosition函数可通过显示缓冲区的最后位置来滚动到末尾。

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

答案 2 :(得分:-1)

我也一直在为此苦苦挣扎。 最后,以下内容对我有用:

    mywindow.SetInsertionPoint(-1)
    mywindow.ShowPosition(mywindow.GetLastPosition())
    mywindow.Refresh()
    mywindow.Update()