2016-11-27 3 views
0

Ich arbeite nicht viel in GUI's, aber ich habe mich entschieden, von gelegentlich mit PyQt4 zu PyQt5 zu wechseln. Meine IDE gibt mir Warnungen über einige der __init__ Funktionen, insbesondere QWidget und QMainWindow.PyQt5 Nicht-Standardparameter nach Standardparameter?

Wenn Sie sich die IntelliSense-Parameter ansehen, sehen Sie, dass der Parameter parent einen Standardwert hat und der flags nicht. Die IDE sagt mir, dass flags ungefüllt ist, aber wenn ich es nicht zur Verfügung stelle, passiert nichts. Warum passiert dies?

Ich benutze Python 3.5.

None

Antwort

2

Die korrekte Signatur ist dies:

QMainWindow(parent: QWidget = None, 
      flags: Union[Qt.WindowFlags, Qt.WindowType] = Qt.WindowFlags()) 

So ist es, wie die IntelliSense in Ihrem IDE sieht nicht weiß, wie Typ-Hinweise richtig zu analysieren (oder überhaupt). Es gibt nur zwei Argumente: parent und flags, die beide Standardwerte haben.

(NB: Sie nie self.__class__ mit super, wie es zu einer unendlichen Rekursion unter bestimmten Umständen führen kann immer passieren in der Unterklasse als erstes Argument verwenden sollten - es sei denn, Sie Python verwenden 3, in dem Fall, dass Sie weglassen. alle Argumente).