我有一个wxTextCtrl,其中包含多行文本,并且启用了滚动条。在事件内部,我想滚动到控件的末尾并重画控件。
这就是我所拥有的:
def event_scroll_to_end(self, event):
self.m_textCtrl1.SetScrollPos(
wx.VERTICAL,
self.m_textCtrl1.GetScrollRange(wx.VERTICAL))
event.Skip()
这将滚动到末尾并更新/重新绘制滚动条本身,但不会更新textCtrl,后者仍显示滚动到其当前位置。
我该如何实际滚动textCtrl,以便如滚动条所示将内容滚动到末尾?
答案 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()