QTextEdit auf QLabel abbilden

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
lunar

Für diesen Quelltext gilt das oben Gesagte.

"label.text()" gibt den Inhalt des Beschriftungsfeld zum Zeitpunkt des Aufrufs zurück. Dieses Objekt wird nicht "magisch" aktualisiert, wenn sich der Text ändert. Außerdem geschieht dieser Aufruf bei Dir zu einem Zeitpunkt, an dem das Fenster nicht einmal vollständig initialisiert ist, dementsprechend ist der Text immer leer. Du darfst den Text des Beschriftungsfelds natürlich erst dann abfragen, wenn es einen Inhalt hat, also sprich, nachdem der Benutzer die Eingabetaste betätigt hat.

Im Allgemeinen verstehe ich auch nicht, wieso Du unbedingt den Text des Beschriftungsfelds abfragen möchtest, anstatt direkt den Text des Eingabefelds zu nehmen.

Jedenfalls offenbart die Tatsache, dass Du im gezeigten Quelltext die Ausgabe des Texts erwartest, grundlegende Verständnisschwierigkeiten im Signal-Slot-Konzept sowie im allgemein asynchronen Ablauf von ereignisorientierten Programmen, wie es jede Benutzeroberfläche ist. Auch andere Probleme im Quelltext wie beispielsweise die Verwendung absoluter Größenangaben, dem Namen "TCPIP_server_Auftragsmodul_v11_units" (?!) sowie manche Kommentare lassen vermuten, dass die für solche Programme nötigen Grundlagen fehlen. Lese also doch bitte die Einführungen und Tutorien in der Qt-Dokumentation.
BlackJack

@Friedericus: Du hast anscheinend grundsätzlich den Programmablauf bei GUIs nicht verstanden. In der vorletzten Zeile von der Funktion ermittelst Du den Inhalt von dem `label` zu dem Zeitpunkt wo diese Zeile ausgeführt wird. Und da steht in dem Label *tatsächlich* nichts drin. Dafür müsstest Du theoretisch zwischen der Abarbeitung der Zeile mit dem `connect()` und der vorletzten Zeile etwas eingetippt und die Eingabetaste gedrückt haben. Selbst das wäre aber nicht genug, denn da die GUI-Hauptschleife diese Ereignisse gar nicht verarbeiten kann, solange Deine Funktion da noch abgearbeitet wird, kann auch das Signal nicht verarbeitet werden.

Deine DocStrings sind übrigens keine -- dafür stehen sie an der falschen Stelle. Literale Zeichenketten sind nur dann DocStrings, wenn sie direkt *nach* einer ``def``- oder ``class``-Anweisung stehen.
Antworten