gpt4 book ai didi

python - 如何让wx.TextCtrl 多行文本平滑更新?

转载 作者:太空宇宙 更新时间:2023-11-03 23:48:48 26 4
gpt4 key购买 nike

我正在开发一个 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()

最佳答案

试试这个:

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")

关于python - 如何让wx.TextCtrl 多行文本平滑更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3566603/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com