0
私はwx.Slider
ウィジェットをイベントハンドラにバインドしています。ユーザーがスライダーを動かすと、何らかのプロセスが実行されます。ただし、プロセスの実行には最大3秒かかることがあるため、ユーザーがスライダーを動かすとイベントが連続的に発生することはありません。代わりに、ユーザーがスライダーの移動をある時間(たとえば2秒)停止した場合にのみ、イベントを発生させます。私はwhile
-loop(下のコードを参照)でtime.time()
を使ってみましたが、イベントが繰り返し発生するため、動作しませんでした。任意のアイデア/ポインタ/提案は非常に高く評価されるだろう。wxpython wx.Slider:ユーザーが一定の時間、一時停止した場合にのみイベントを発生させる方法
import wx
import time
class Example(wx.Frame):
def __init__(self, *args, **kw):
super(Example, self).__init__(*args, **kw)
self.InitUI()
def InitUI(self):
pnl = wx.Panel(self)
sld = wx.Slider(pnl, value=200, minValue=150, maxValue=500, pos=(20, 20),
size=(250, -1), style=wx.SL_HORIZONTAL)
self.counter = 0
sld.Bind(wx.EVT_SCROLL, self.OnSliderScroll)
self.txt = wx.StaticText(pnl, label='200', pos=(20, 90))
self.SetSize((290, 200))
self.SetTitle('wx.Slider')
self.Centre()
self.Show(True)
def OnSliderScroll(self, e):
now = time.time()
future = now + 2
while time.time() < future:
pass
#substitute for the actual process.
self.counter += 1
print self.counter
def main():
ex = wx.App()
Example(None)
ex.MainLoop()
if __name__ == '__main__':
main()
ありがとうございます!それはまさに私が望むものです。 – Alex