Bonjour,

Je travaille sur le portage à PyQt4 d'une bibliothèque graphique (Anygui, pour ne pas la nommer), qui utilisait initialement PyQt 3. Pour la plupart des widgets, tout s'est passé sans problème, mais je rencontre plus de difficultés au niveau des menus.

En effet, lorsque la fenêtre est créée... elle n'a aucun menu.

Voici le code actuel : (j'en ai supprimé quelques parties pour éviter qu'il ne soit trop long)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class MenuWrapper(MenuItemMixin, ComponentWrapper):
 
    def widgetFactory(self,*args,**kws):
        print('create menu')
        return QMenu(*args,**kws)
 
    def insertInto(self, widget):
        print('insert menu in %r' % widget)
        self.rebuild()
        widget.addMenu(self.widget)
        self.itemId = len(widget.actions())
 
class MenuBarWrapper(MenuWrapper):
    def widgetFactory(self,*args,**kws):
        parent = args[0].parent()
        widget = parent.menuBar()
        print('create menubar: %r' % widget)
        widget.clear()
        return widget
 
 
class MenuCommandWrapper(MenuItemMixin, AbstractWrapper):
 
    def insertInto(self, widget):
        print('insert command in %r' % widget)
        self.parentWidget = widget
        self.widget = widget.addAction(self.proxy.text)
        self.itemId = len(widget.actions())
        self.widget.triggered.connect(self.clickHandler)
 
    def clickHandler(self,*args,**kws):
        send(self.proxy,'click',text=self.proxy.text)
Et la sortie :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
create menubar: <PyQt4.QtGui.QMenuBar object at 0x298f9e0>
create menu
insert menu in <PyQt4.QtGui.QMenuBar object at 0x298f9e0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
create menu
insert menu in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fdd0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fdd0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fdd0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
create menu
insert menu in <PyQt4.QtGui.QMenuBar object at 0x298f9e0>
insert command in <PyQt4.QtGui.QMenu object at 0x2a93170>
insert menu in <PyQt4.QtGui.QMenuBar object at 0x298f9e0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert menu in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fdd0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fdd0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fdd0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert menu in <PyQt4.QtGui.QMenuBar object at 0x298f9e0>
insert command in <PyQt4.QtGui.QMenu object at 0x2a93170>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert menu in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fdd0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fdd0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fdd0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert menu in <PyQt4.QtGui.QMenuBar object at 0x298f9e0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert menu in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fdd0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fdd0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fdd0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert menu in <PyQt4.QtGui.QMenuBar object at 0x298f9e0>
insert command in <PyQt4.QtGui.QMenu object at 0x2a93170>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert menu in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fdd0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fdd0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fdd0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert menu in <PyQt4.QtGui.QMenuBar object at 0x298f9e0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert menu in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fdd0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fdd0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fdd0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert menu in <PyQt4.QtGui.QMenuBar object at 0x298f9e0>
insert command in <PyQt4.QtGui.QMenu object at 0x2a93170>
insert command in <PyQt4.QtGui.QMenu object at 0x298fdd0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fdd0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fdd0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert menu in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fdd0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fdd0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fdd0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fdd0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fdd0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fdd0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert menu in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fdd0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fdd0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fdd0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x2a93170>
insert menu in <PyQt4.QtGui.QMenuBar object at 0x298f9e0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert menu in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fdd0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fdd0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fdd0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert menu in <PyQt4.QtGui.QMenuBar object at 0x298f9e0>
insert command in <PyQt4.QtGui.QMenu object at 0x2a93170>
insert command in <PyQt4.QtGui.QMenu object at 0x2a93170>
insert menu in <PyQt4.QtGui.QMenuBar object at 0x298f9e0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert menu in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert command in <PyQt4.QtGui.QMenu object at 0x298fdd0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fdd0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fdd0>
insert command in <PyQt4.QtGui.QMenu object at 0x298fa70>
insert menu in <PyQt4.QtGui.QMenuBar object at 0x298f9e0>
insert command in <PyQt4.QtGui.QMenu object at 0x2a93170>
Pourtant, d'après la sortie, tout a l'air d'avoir été créé dans le bon ordre.

Une idée ?

Merci d'avance,
ProgVal