【问题标题】:wxpython: Is there a quicker method for inserting large quantities of text into text controls?wxpython:在文本控件中插入大量文本是否有更快的方法?
【发布时间】:2018-03-04 01:54:13
【问题描述】:

我现在正在用 wxpython 编写一个 GUI,它的功能之一是文本控件。此文本控件通常需要将数千个不同长度的数字插入其中。当它被数据填充时,它需要很长时间(可能是 30 秒或更长时间)。

只是想知道,有没有一种方法可以用数据填充文本控件以使其更快?谢谢。

【问题讨论】:

    标签: database text controls wxpython large-data-volumes


    【解决方案1】:

    我想这取决于延迟是由于获取数字的行为还是由于文本控件的加载造成的。
    如果是文本控件,可以预先加载一个带有数据的变量,然后一键加载。

    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") 行,您应该会看到第一种方法运行速度快了好几倍。至少在我的盒子上是这样。

    【讨论】:

    • 天哪,这比我想象的要好得多。谢谢!既是一个非常全面的例子,也是一个有效的解决方案。我现在在几秒钟内加载了 13000 行! :D
    猜你喜欢
    • 2010-11-06
    • 1970-01-01
    • 2020-10-17
    • 2012-02-03
    • 1970-01-01
    • 2018-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多