在我的项目中,我使用wx.stc.StyledTextCtrl()。我将按下和按下键的事件绑定在一起。当我想在TextCtrl中添加一个字母时,由于某些原因,我不跳过该事件,我使用了AddText()方法来添加文本。当文本很长并且ScrollBar(处于屏幕宽度)打开时,我希望ScrollBar处于我可以看到所添加字母的位置(它将自动移动)。当前,ScrollBar始终位于屏幕的左侧。
我正在寻找可以做到这一点的功能。

当字母超过TextCtrl的宽度(pos 300以上)时,ScrollBar仍然不会移动。我希望它就像框架右侧的messageTxt。
这是介绍我的问题的基本代码:

import wx
import wx.stc

def on_key_down(event):
    pass
def on_key_up(event):
    key_code = event.GetKeyCode()
    messageTxt.AddText(chr(key_code))

app = wx.App()
frame = wx.Frame(None, -1, title='2', pos=(0, 0), size=(500, 500))
frame.Show(True)
messageTxt = wx.stc.StyledTextCtrl(frame, id=wx.ID_ANY, pos=(0, 0), size=(300, 300),
                                     style=wx.TE_MULTILINE, name="File")
messageTxt.Bind(wx.EVT_KEY_DOWN, on_key_down)
messageTxt.Bind(wx.EVT_KEY_UP, on_key_up)
messageTxt2 = wx.stc.StyledTextCtrl(frame, id=wx.ID_ANY, pos=(320, 0), size=(150, 150),
                                   style=wx.TE_MULTILINE, name="File")

app.SetTopWindow(frame)
app.MainLoop()

最佳答案

我添加了一个不同的答案,因为按照我的解释,第一个问题仍然有效,但不是针对您的问题。
我认为这是您问题的模型,如果不是,请告诉我,我将其删除。
“服务器更新”是通过计时器模拟的,添加了字符,然后我们只需将光标1字符向右移动。

import wx
import wx.stc

server_sends=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','T','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','T']

class MyFrame(wx.Frame):
    def __init__(self, parent, id=wx.ID_ANY, title=""):
        super(MyFrame, self).__init__(parent, id, title)
        self.SetSize((500,500))
        self.panel = wx.Panel(self, -1 , size=(500,500))
        self.messageTxt = wx.stc.StyledTextCtrl(self.panel, id=wx.ID_ANY, pos=(0, 0), size=(300, 300),
                                     style=wx.TE_MULTILINE, name="File")
        self.messageTxt2 = wx.stc.StyledTextCtrl(self.panel, id=wx.ID_ANY, pos=(320, 0), size=(150, 150),                                   style=wx.TE_MULTILINE, name="File")
        self.timer = wx.Timer(self)
        self.Bind(wx.EVT_TIMER, self.OnTimer, self.timer)
        self.timer.Start(500)
        self.cnt = 0
        self.Show()

    def OnTimer(self, event):
        print (server_sends[self.cnt])
        self.Server_Update(server_sends[self.cnt])
        self.cnt += 1
        if self.cnt > len(server_sends) - 1 :
            self.timer.Stop()

    def Server_Update(self,char):
        self.messageTxt.AddText(char)
        self.messageTxt.CharRight()

if __name__ == "__main__":
    app = wx.App()
    frame = MyFrame(None,title="The Main Frame")
    app.MainLoop()


python - Wx.stc.StyledTextCtrl滚动条-LMLPHP

关于python - Wx.stc.StyledTextCtrl滚动条,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59756826/

10-12 21:09