Как мне сделать многострочный текст WX.TextCTRL плавно?

StackOverflow https://stackoverflow.com/questions/3566603

  •  01-10-2019
  •  | 
  •  

Вопрос

Я работаю над программой GUI, и я использую AppendText для обновления статуса в многострочной текстовой коробке (из 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()
Это было полезно?

Решение

Попробуйте позвонить Refresh() Метод на textCtrl

Обновлять:

Вопрос уже спросил относительно этой проблемы, здесь Является ли ответ, который в значительной степени решает его, - это не идеально, но, может быть, вы можете улучшить на нем ...

Здесь Это нить из списка рассылки WXPYPHON, касающаяся проблемы, которая также может представлять для вас интерес.

Другие советы

попробуй это:

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")
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top