Python 如何使wx.TextCtrl多行文本平滑更新?
我正在开发一个GUI程序,我使用AppendText更新多行文本框(由wx.TextCtrl组成)中的状态。我注意到,每次有一行新词出现在这个框中时,框中的所有文本都消失了(不是真实的,只是视觉上的),我必须单击滚动按钮来检查最新更新/写入的状态行。为什么会这样?我应该添加一些样式吗?希望你们能帮我 以下是我的示例代码:Python 如何使wx.TextCtrl多行文本平滑更新?,python,wxpython,wx.textctrl,Python,Wxpython,Wx.textctrl,我正在开发一个GUI程序,我使用AppendText更新多行文本框(由wx.TextCtrl组成)中的状态。我注意到,每次有一行新词出现在这个框中时,框中的所有文本都消失了(不是真实的,只是视觉上的),我必须单击滚动按钮来检查最新更新/写入的状态行。为什么会这样?我应该添加一些样式吗?希望你们能帮我 以下是我的示例代码: import wx import thread import time class TestFrame(wx.Frame): def __init__(self):
import wx
import thread
import time
class TestFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, parent = None, id = -1, title = "Testing", pos=(350, 110), size=(490,530), style=wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX | wx.MINIMIZE_BOX)
panel = wx.Panel(self)
self.StartButton = wx.Button(parent = panel, id = -1, label = "Start", pos = (110, 17), size = (50, 20))
self.MultiLine = wx.TextCtrl(parent = panel, id = -1, pos = (38, 70), size = (410, 90), style = wx.TE_MULTILINE|wx.TE_READONLY|wx.TE_AUTO_URL)
self.Bind(wx.EVT_BUTTON, self.OnStart, self.StartButton)
def OnStart(self, event):
self.StartButton.Disable()
thread.start_new_thread(self.LongRunning, ())
def LongRunning(self):
Counter = 1
while True:
self.MultiLine.AppendText("Hi," + str(Counter) + "\n")
Counter = Counter + 1
time.sleep(2)
class TestApp(wx.App):
def OnInit(self):
self.TestFrame = TestFrame()
self.TestFrame.Show()
self.SetTopWindow(self.TestFrame)
return True
def main():
App = TestApp(redirect = False)
App.MainLoop()
if __name__ == "__main__":
main()
试试这个:
self.logs = wx.TextCtrl(self, id=-1, value='', pos=wx.DefaultPosition,
size=(-1,300),
style= wx.TE_MULTILINE | wx.SUNKEN_BORDER)
self.logs.AppendText(text + "\n")
尝试调用
textCtrl
更新:
关于这个问题已经有人提出了一个问题,这个问题的答案基本上解决了这个问题,-它并不完美,但也许你可以改进它
是wxpython邮件列表中关于该问题的线程,您可能也感兴趣。它不起作用。。。我仍然是空的,必须使用滚动条来检查状态…如果你能添加一个可运行的示例,那么它不应该花费我或其他人很长时间,也不应该找出问题所在。没有代码,这是一个猜谜游戏!很抱歉耽搁了,请参阅我的更新答案,以获得一个几乎可以解决您问题的链接。