Я работаю над программой GUI, и я использую AppendText для обновления статуса в многострочном текстовом поле (из wx.TextCtrl). Я заметил, что каждый раз, когда в этом поле появляется новая строка, вместо того, чтобы плавно добавлять эту строку до конца, все тексты в поле просто исчезают (не в реальном, просто визуально), и я должен нажать кнопку прокрутки, чтобы проверить новая обновленная/записанная строка состояния. Почему это происходит? Должен ли я добавлять некоторые стили? Надеюсь, вы, ребята, можете мне помочь.Как сделать многострочное текстовое обновление wx.TextCtrl плавно?
Вот мой пример кода:
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()
Это не работает ... Я по-прежнему пуста и должен использовать полосу прокрутки, чтобы проверить статус ... – Shane
Если вы можете добавить runnable sample, то это не должно заставлять меня или кого-то еще долго ждать, или что-то не так. Без кода его игра-гадание! – volting
Я только что добавил свой код, пожалуйста, посмотрите его. :) – Shane