2
'''Test paint event override in python'''
6
from PySide.QtCore import QTimerEvent
7
from PySide.QtGui import QApplication, QWidget
9
from helper import UsesQApplication
11
class MyWidget(QWidget):
14
def __init__(self, app=None):
17
app = QApplication([])
19
super(MyWidget, self).__init__()
23
self.paint_event_called = False
25
def timerEvent(self, event):
29
if self.runs == self.max_runs:
32
if not isinstance(event, QTimerEvent):
33
raise TypeError('Invalid event type. Must be QTimerEvent')
35
def paintEvent(self, event):
36
#Empty paint event method
37
# XXX: should be using super here, but somehow PyQt4
38
# complains about paintEvent not present in super
39
QWidget.paintEvent(self, event)
40
self.paint_event_called = True
43
class PaintEventOverride(UsesQApplication):
44
'''Test case for overriding QWidget.paintEvent'''
50
super(PaintEventOverride, self).setUp()
51
self.widget = MyWidget(self.app)
56
super(PaintEventOverride, self).tearDown()
58
def testPaintEvent(self):
59
#Test QWidget.paintEvent override
60
timer_id = self.widget.startTimer(100)
64
self.widget.killTimer(timer_id)
66
self.assert_(self.widget.paint_event_called)
67
self.assertEqual(self.widget.runs, 5)
70
if __name__ == '__main__':