1
- from pytestqt . qt_compat import QtGui , Qt , QEvent , QtCore
1
+ import weakref
2
2
import pytest
3
+ from pytestqt .qt_compat import QtGui , Qt , QEvent , QtCore
3
4
4
5
5
6
def test_basics (qtbot ):
6
7
"""
7
8
Basic test that works more like a sanity check to ensure we are setting up a QApplication
8
- properly and are able to display a simple event_recorder.
9
+ properly and are able to display a simple event_recorder.
9
10
"""
10
- assert type (QtGui .qApp ) is QtGui .QApplication
11
+ assert isinstance (QtGui .qApp , QtGui .QApplication )
11
12
widget = QtGui .QWidget ()
12
13
qtbot .addWidget (widget )
13
14
widget .setWindowTitle ('W1' )
14
15
widget .show ()
15
-
16
+
16
17
assert widget .isVisible ()
17
18
assert widget .windowTitle () == 'W1'
18
-
19
-
19
+
20
+
20
21
def test_key_events (qtbot , event_recorder ):
21
22
"""
22
23
Basic key events test.
@@ -27,16 +28,16 @@ def extract(key_event):
27
28
key_event .key (),
28
29
key_event .text (),
29
30
)
30
-
31
+
31
32
event_recorder .registerEvent (QtGui .QKeyEvent , extract )
32
-
33
+
33
34
qtbot .keyPress (event_recorder , 'a' )
34
35
assert event_recorder .event_data == (QEvent .KeyPress , int (Qt .Key_A ), 'a' )
35
-
36
+
36
37
qtbot .keyRelease (event_recorder , 'a' )
37
38
assert event_recorder .event_data == (QEvent .KeyRelease , int (Qt .Key_A ), 'a' )
38
-
39
-
39
+
40
+
40
41
def test_mouse_events (qtbot , event_recorder ):
41
42
"""
42
43
Basic mouse events test.
@@ -49,10 +50,10 @@ def extract(mouse_event):
49
50
)
50
51
51
52
event_recorder .registerEvent (QtGui .QMouseEvent , extract )
52
-
53
+
53
54
qtbot .mousePress (event_recorder , Qt .LeftButton )
54
55
assert event_recorder .event_data == (QEvent .MouseButtonPress , Qt .LeftButton , Qt .NoModifier )
55
-
56
+
56
57
qtbot .mousePress (event_recorder , Qt .RightButton , Qt .AltModifier )
57
58
assert event_recorder .event_data == (QEvent .MouseButtonPress , Qt .RightButton , Qt .AltModifier )
58
59
@@ -67,32 +68,41 @@ def test_stop_for_interaction(qtbot):
67
68
QtCore .QTimer .singleShot (0 , widget .close )
68
69
qtbot .stopForInteraction ()
69
70
70
-
71
+
72
+ def test_widget_kept_as_weakref (qtbot ):
73
+ """
74
+ Test if the widget is kept as a weak reference in QtBot
75
+ """
76
+ widget = QtGui .QWidget ()
77
+ qtbot .add_widget (widget )
78
+ widget = weakref .ref (widget )
79
+ assert widget () is None
80
+
81
+
71
82
class EventRecorder (QtGui .QWidget ):
83
+
72
84
"""
73
85
Widget that records some kind of events sent to it.
74
-
86
+
75
87
When this event_recorder receives a registered event (by calling `registerEvent`), it will call
76
- the associated *extract* function and hold the return value from the function in the
88
+ the associated *extract* function and hold the return value from the function in the
77
89
`event_data` member.
78
90
"""
79
-
91
+
80
92
def __init__ (self ):
81
93
QtGui .QWidget .__init__ (self )
82
94
self ._event_types = {}
83
95
self .event_data = None
84
-
85
-
96
+
86
97
def registerEvent (self , event_type , extract_func ):
87
98
self ._event_types [event_type ] = extract_func
88
-
89
-
99
+
90
100
def event (self , ev ):
91
101
for event_type , extract_func in self ._event_types .items ():
92
- if type (ev ) is event_type :
102
+ if isinstance (ev , event_type ) :
93
103
self .event_data = extract_func (ev )
94
104
return True
95
-
105
+
96
106
return False
97
107
98
108
@@ -101,5 +111,3 @@ def event_recorder(qtbot):
101
111
widget = EventRecorder ()
102
112
qtbot .addWidget (widget )
103
113
return widget
104
-
105
-
0 commit comments