Am Sonntag, 10. Oktober 2021, 22:36:40 CEST schrieb Mohsen Owzar:
Hans-Peter Jansen schrieb am Sonntag, 10. Oktober 2021 um 18:39:52 UTC+2:
Oh Manno Mann, Hans-Peter Ich weiss nicht, wie ich mich bei Dir bedanken kann? Wie die Schwizer sagen, ich bin Dir tuuusig Mal dankbar.
Oh, ein Schwizer. Grüezi. Ist Schwizer Dütsch jetzt eine Fremdsprache oder nicht? Für mich als Rheinländer ist das schwer zu sagen. ;-)
QMainWindows sind speziell im Umgang mit Widgets:
Wenn Qt so was raus haut, dann sollte man dem auf den Grund gehen: QWidget::setLayout: Attempting to set QLayout "" on MainWindow "", which already has a layout Das Verhalten Deiner geänderten Version ist genau das, was ich vorgehabt habe, zu programmieren und es mir nicht gelang.
Na, das ist doch schon mal großartig, und es freut mich, geholfen zu haben.
Aber wie sollte ich darauf kommen, dass bei QMainWindow der Hase ein bisschen anders läuft? Ohne Deine Erklärung wäre ich nicht in 1000 Jahre darauf gekommen. Ich programmiere mit Python seit etwa 10 Monaten.
Na ja, die Qt-Klassenbibliothek ist so mächtig und umfangreich, das wundert mich nicht. Python selbst ist ja schon anspruchsvoll, aber wenigstens sind die Grundkonzepte eingängig und viele Sprachelemente sehr mächtig. Wenn jetzt aber auch Qt mit fast 2000 Klassen(!) hinzukommt, wird's, ähem, interessant. Das erschließt sich nicht in kurzer Zeit. Ich verfolge die Entwicklung von PyQt seit 2001 (kein Witz), kannst ja mal ein grep meines Namens in den examples machen... Wichtig ist, die originale C++ Doku lesen zu können, mit der Zeit lernt man, die wesentlichen Informationen herauszufiltern, das ganze C++ Brimborium zu ignorieren, und ein paar grundsätzliche Unterschiede aufzulösen (Argument mit address of value -> Mehrfachwert Rückgabe in Python, etc..).
Manche Zusammenhänge sind mir noch nicht so ganz geläufig, wie die Sache mit Parent und Co. und jetzt QMainWindow Spezialitäten.
Die richtige Initialisierung des keypad Wertes beim wiederholten Aufruf überlasse ich Dir als Hausaufgabe..
Die richtige Initialisierung habe ich nicht verstanden, was Du damit meinst.
Wenn Du schon einen Wert im line edit stehen hast, sollte dieser immer ins keypad übernommen werden, sodass der user immer den aktuellen Wert bearbeiten kann.
Ich habe aber gesehen, wenn man auf das Feld geklickt hat und das Keypyd-Fenster geöffnet wurde, kann man noch einmal in das Feld klicken und dort auch noch Character mit dem normalen Keyboard eintippen, was nicht der Sinn der Sache ist. Daher habe ich in der Metode "show_keypad_window" das Edit-Feld mit "self.cle.setReadOnly(True)" gesperrt und bei "closeEvent" wieder freigegeben.
Entweder würde ich das keypad modal machen, dann kannst Du aber immer einen Wert bearbeiten oder mit signals und slots beide Werte simultan aktuell halten.
Ich denke, dass ich damit diesen Fehler behoben habe. Ich muss noch weitere Tests durchführen, um vielleicht eine nicht geddachte Version zu erwischen.
Ich hoffe, das bringt Dich erst mal weiter.
Nicht nur weitergebracht, sondern auch die Augen geöffnet. Vieeeelen Dank!
Aber gerne doch. Bis denne, hp