On Tue, 27 May 2008 01:31:35 -0700, Alex Gusarov wrote: > Hello, I have strong .NET background with C# and want to do some > familiar things from it with Python, but don't know how. For example, > I created form in qt designer with QCalendarWidget, translated it into > Python module and want to overload virtual method paintCell of > QCalendarWidget. In C# I can write following (abstract) code: > > this.calendar.PaintCell += new PaintEventHandler(myPaintCellHandler); > > void myPaintCellHandler(object sender, PaintEventArgs e) { > // some work here > } > > I can't find how I can do similar thing in Python without inheriting > QCalendarWidget and overloading this method in inherited class (it's > long and I must create additional class). The only thing I done its > full replacement of handler: > > calendar.paintCell = myPaintCell > > def myPaintCell(self): > pass >
It is more a matter of the GUI toolkit you are using rather than the language. In Python, they are many, but they are not as tighty integrated with the language as in C#. Also, Python has a no standard support for event handling, but again several non-standard library (e.g. twisted ) and plus you can relatively easily cook your own recipe, has other posters have shown you. Anyway, IIRC (it's a long time since I used Qt), QT allows to connect more than one slot with the same signal, so you should not need to subclass or to create your own multi-dispatcher. Just doing: calendar.paintCell.signal( SOME_SIGNAL_NAME, my_paint_method ) should work. I don't know which signal you should connect to, however. This link gives you some detail on signal/slots in PyQT: http://www.commandprompt.com/community/pyqt/x1408 Ciao ----- FB -- http://mail.python.org/mailman/listinfo/python-list