2017-09-22 16 views
0

私は今wxpythonでGUIをコーディングしており、その機能の1つはテキストコントロールです。このテキストコントロールには、しばしばそれに挿入されるさまざまな長さの数千の数十がかかります。データがいっぱいになると、長い時間がかかります(おそらく30秒以上)。wxpython:大量のテキストをテキストコントロールに挿入する方法はありますか?

ちょうど、テキストコントロールにデータを埋め込む方法があります。これでデータコントロールをより速くすることができますか?ありがとう。

答えて

0

遅延が数値を取得する行為であるのか、テキストコントロールの読み込みに起因するのかによります。
テキストコントロールの場合は、変数にデータをあらかじめロードしてから、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)行をコメントアウトし、テキストコントロールを一度に1つずつロードするself.tc.AppendText(str(i)+"\n")行のコメントを外すと、最初のメソッドが複数回速く実行されることがわかります。少なくともそれは私の箱にあります。

+0

ああ私の神は、私が想像していたよりもはるかに優れていました。ありがとうございました!非常に包括的な例と効果的なソリューションです。私は数秒で13000行を読み込んでいます! :D –