1

アップロードゲージ付きのアップロードプログラムを作りたいです。私はコールバック関数である関数を持っています:

def myupdater(self, current, total):

    m = (Decimal(current)/Decimal(total))
    print "uploaded {0}/{1} so far".format(current, total)
    self.gauge_1.SetValue(m)
    print(m)
    print (self.gauge_1.GetValue)
    wx.Yield()
    print"----------------------"

そして表示されます (ゲージは最後に 100% に変わるだけです):

http://pastebin.com/eM40e6mv

完全なコード: http://pastebin.com/uaThd5sD

4

2 に答える 2

1

Gaugeの範囲は int 型です。1 未満の値を渡すと、0 として扱われgauge_1 ..ます。次のように行を変更します。

self.gauge_1 = wx.Gauge(self.notebook_1_pane_1, -1, 100)

次のように変更myupdaterします。

def myupdater(self, current, total):
    m = 100 * current / total
    self.gauge_1.SetValue(m)
    wx.Yield()
于 2013-06-22T17:55:00.927 に答える
0

ファイルのアップロード中に GUI を更新するには、ワーカー スレッドが必要なようです。threading モジュールを試してください:

import threading

def myupdater(self):
    while self.still_uploading:
        #do stuff

threading.Thread(target=myupdater).start()
#upload stuff here
于 2013-06-22T17:24:09.637 に答える