【发布时间】:2018-03-04 01:54:13
【问题描述】:
我现在正在用 wxpython 编写一个 GUI,它的功能之一是文本控件。此文本控件通常需要将数千个不同长度的数字插入其中。当它被数据填充时,它需要很长时间(可能是 30 秒或更长时间)。
只是想知道,有没有一种方法可以用数据填充文本控件以使其更快?谢谢。
【问题讨论】:
标签: database text controls wxpython large-data-volumes
我现在正在用 wxpython 编写一个 GUI,它的功能之一是文本控件。此文本控件通常需要将数千个不同长度的数字插入其中。当它被数据填充时,它需要很长时间(可能是 30 秒或更长时间)。
只是想知道,有没有一种方法可以用数据填充文本控件以使其更快?谢谢。
【问题讨论】:
标签: database text controls wxpython large-data-volumes
我想这取决于延迟是由于获取数字的行为还是由于文本控件的加载造成的。
如果是文本控件,可以预先加载一个带有数据的变量,然后一键加载。
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") 行,您应该会看到第一种方法运行速度快了好几倍。至少在我的盒子上是这样。
【讨论】: