On Sep 23, 4:24 am, Tim Golden <[EMAIL PROTECTED]> wrote: > Sayanan Sivaraman wrote: > > So I've written a simple video player using directshow/COM in VC++, > > and I'm in the process of translating it to python. For example, when > > the avi starts playing, I have a call media_control.Run() , etc. > > > I'm wondering how I should go about updating my gtk.Hscale widget as a > > trackbar for the avi player. > > > In C++, I have the following callbacks that update the scrollbar and > > video position with a timer. > > [... snip callbacks ...] > > > > > I'm wondering how I would implement similar callbacks in Python for a > > gtk.Hscale, and some sort of time [I'm not familiar with Pythons > > timers/threading at all]. > > You'd help your cause a lot here if you posted *Python* > code to indicate what's calling what back where. Also if > you stated whether you were using, eg, the GTK toolkit which > your description suggests, or some other GUI toolkit. Because > they tend to vary as to how they arrange their callbacks. > > In geeneral, Python callbacks are trivial: you create the > function to do whatever and then pass the function as an > object into the calling-back function call. Something > like this (invented GUI toolkit): > > <code> > def handle_lbutton_click (event): > # > # do stuff with lbutton click > # > > def handle_widget_slide (event): > # > # do stuff with widget slide > # > > handle_event ("lbutton_click", handle_lbutton_click) > widget.attach_event ("slide", handle_widget_slide) > > </code> > > But the details will obviously depend on the toolkit you > use. > > TJG > TJG
Sorry, you make a very good point. I am using gtk. I don't have a problem with callbacks for the gtk widgets. My question is about timers and their callbacks. The reason I used c++ code is that Microsoft's COM interface is natively in C++, and Python uses "import comtypes" to access this functionality and the dll's.[ie GetModule('quartz.dll')] Essentially what I would like to have [as evidenced by the c++ code] is something like the following: def timer_callback(args): while timer is active update scrollbar position based on video progress #here I am using microsoft's COM interface, so the function would be something like scrollbar.set_value(media_control.CurrentPosition) def scrollbar_callback : when the scrollbar is moved, update this video position #this I understand. It would be something like media_control.CurrentPosition= scrollbar.get_value() def pauser : media_control.Pause() *somehow kill timer* def player: media_control.Run() timer.run() #timer.run() would call timer_callback So I would like to know how to construct and implement a timer that would do the above, a la the first callback. In addition, the timer has to be able to be paused/killed if I pause the video, and implemented again if I play the video ie: Thanks, sayanan -- http://mail.python.org/mailman/listinfo/python-list