wxpython:是否有更快的方法将大量文本插入文本控件?
wxpython: Is there a quicker method for inserting large quantities of text into text controls?
我现在正在用 wxpython 编写 GUI,其功能之一是文本控件。此文本控件通常需要插入数以千计的不同长度的数字。当它被数据填充时,它需要很长时间(可能 30 秒或更长时间)。
只是想知道,有没有一种方法可以用数据填充文本控件,使其更快地完成?谢谢。
我想这取决于延迟是由于获取数字还是加载文本控件引起的。
如果是文本控件,可以把数据预加载一个变量,然后一键加载。
import wx
import time
class test(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None)
self.panel = wx.Panel(self, wx.ID_ANY)
self.tc = wx.TextCtrl(self.panel, wx.ID_ANY, size=(300,400),
style = wx.TE_MULTILINE|wx.TE_READONLY|wx.VSCROLL)
text=""
start = time.time()
for i in range(1,30000):
text+=str(i)+'\n'
# self.tc.AppendText(str(i)+"\n")
self.tc.WriteText(text)
self.Show()
end = time.time()
print (end - start)
if __name__ == '__main__':
app = wx.App()
frame = test()
app.MainLoop()
在这里,我用数字构建 text
,然后用 WriteText
.
加载一次
如果您注释掉 text=text+str(i)+'\n'
和 self.tc.WriteText(text)
行并取消注释 self.tc.AppendText(str(i)+"\n")
行(一次加载一个数字的文本控件),您应该会看到第一种方法的运行速度快了好几倍。至少在我的盒子上是这样。
我现在正在用 wxpython 编写 GUI,其功能之一是文本控件。此文本控件通常需要插入数以千计的不同长度的数字。当它被数据填充时,它需要很长时间(可能 30 秒或更长时间)。
只是想知道,有没有一种方法可以用数据填充文本控件,使其更快地完成?谢谢。
我想这取决于延迟是由于获取数字还是加载文本控件引起的。
如果是文本控件,可以把数据预加载一个变量,然后一键加载。
import wx
import time
class test(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None)
self.panel = wx.Panel(self, wx.ID_ANY)
self.tc = wx.TextCtrl(self.panel, wx.ID_ANY, size=(300,400),
style = wx.TE_MULTILINE|wx.TE_READONLY|wx.VSCROLL)
text=""
start = time.time()
for i in range(1,30000):
text+=str(i)+'\n'
# self.tc.AppendText(str(i)+"\n")
self.tc.WriteText(text)
self.Show()
end = time.time()
print (end - start)
if __name__ == '__main__':
app = wx.App()
frame = test()
app.MainLoop()
在这里,我用数字构建 text
,然后用 WriteText
.
加载一次
如果您注释掉 text=text+str(i)+'\n'
和 self.tc.WriteText(text)
行并取消注释 self.tc.AppendText(str(i)+"\n")
行(一次加载一个数字的文本控件),您应该会看到第一种方法的运行速度快了好几倍。至少在我的盒子上是这样。