Qt Python Programm funktioniert nach Umstieg von Windows auf Mac OS nicht mehr

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
Gironimo
User
Beiträge: 2
Registriert: Montag 15. April 2019, 21:58

Montag 15. April 2019, 22:14

Hallo!

Ich bin von Windows auf Mac OS umgestiegen. Nun funktionieren meine Qt Programme nicht mehr :( .
Meine Kommandozeilenprogramme funktionieren einwandfrei aber die Qt Programme nicht mehr.
Ich schreibe in PyCharm unter Windows und jetzt auch unter Mac OS. In PyCharm kann ich es ausführen, es startet auch aber wenn ich Buttons klicke machen sie nicht das was Sie sollen(bis auf Exit Button).
Hat jemand eine Idee woran es liegen kann?

Hier mal mein Github mit dem Programm: https://github.com/Gir0nim0/Sudhausrechner

Danke im voraus. Mit freundlichen Grüßen, Jan
Benutzeravatar
__blackjack__
User
Beiträge: 2764
Registriert: Samstag 2. Juni 2018, 10:21

Mittwoch 17. April 2019, 11:57

Also unter Linux scheint es zu funktionieren, aber die GUI ist ziemlich kaputt weil Du anscheinend keine Layouts sondern absolute Grössen und Positionen verwendest:
Bild
Das solltest Du ändern.

Was passiert denn wenn Du das ausserhalb einer IDE in einer Konsole startest? Wird da etwas ausgegeben wenn Du „berechnen“ klickst?
“All tribal myths are true, for a given value of 'true'.” – Terry Pratchett, The Last Continent
Gironimo
User
Beiträge: 2
Registriert: Montag 15. April 2019, 21:58

Mittwoch 17. April 2019, 19:37

Hallo!

Danke, dass du es dir mal angeschaut hast.

Also bei mir startet es auch. Aber wenn ich die Felder für die Berechnung der Sudhausausbeute fülle und auf berechnen klicke wird darunter nichts angezeigt. Das ist in der IDE so und auch beim ausführen über eine Konsole. Ich hab jetzt mal ein print() eingefügt um mal zu schauen ob der Button funzt. Das macht er. Aber das Ergebnis wird nicht ins Label geschrieben, was unter der Zeile unter dem Button ist.

Ich glaube echt, dass es ein Mac Ding ist. Denn IDE und Python Version sind identisch. :roll:

Ich komm gerade echt nicht weiter :(

Gruß Jan
Benutzeravatar
__blackjack__
User
Beiträge: 2764
Registriert: Samstag 2. Juni 2018, 10:21

Donnerstag 18. April 2019, 14:16

@Gironimo: Hast Du das auch in einer Konsole ausgeführt und nicht aus einer IDE heraus? Und wo war das `print()` platziert? Nach dem Setzen des Labeltextes, also das Du sicher bist, das der Code auch bis dort hin gekommen ist? Ist das Label auch tatsächlich sichtbar? Welche Qt-Anbindung wird denn letztendlich verwendet? PyQt oder PySide und in welcher Version? Ist *das* auch auf den Rechnern gleich?

Warum generierst Du aus der *.ui-Datei eigentlich eine Python-Datei? Man kann doch auch einfach die *.ui-Datei zur Laufzeit laden.

Für die Eingaben von Gleitkommazahlen würde ich einen `QDoubleSpinner` verwenden. Da kann man dann auch gleich die Einheiten mit in die Anzeige packen. Und mittels `QLocale` kann man Anzeige und Umwandlung verbessern, so das man nicht immer das Dezimalkomma durch einen Dezimalpunkt ersetzen muss.

Das Ergebnis könnte man auch in „read only“-”Eingabe”feldern anzeigen. Da ist dann auch gleich die Masseinheit drin, und man kann dort die Anzahl der Nachkommastellen angeben und kann sich das runden sparen. Zudem kann der Benutzer das Ergebnis aus dem Feld in die Zwischenablage kopieren. Was auch bei der bisherigen Darstellung in Labels eine nette Idee wäre: man kann das auf `QLabel` mit `setTextInteractionFlags()` ermöglichen.

Man könnte sich vielleicht auch die „berechnen“-Schaltflächen sparen, wenn man einfach bei allen Änderungen in den Eingabefeldern das Ergebnis versucht neu zu berechnen. Dann hat der Benutzer einen Klick weniger und braucht nur die Zahlen einzutragen.

Ich würde auch die Geschäftslogik von der GUI trennen. Also im Grunde ja nur ein paar Funktionen mit den Formeln.

Die „Exit“-Schaltfläche wird mit der `exit()`-Funktion verbunden: das ist falsch. Erstens gibt es diese Funktion eigentlich gar nicht – die ist nicht dokumentiert und nur da weil die interaktive Python-Shell die anbietet. Und zweitens beendet die das Programm hart, ohne Rücksicht auf Qt zu nehmen. Dessen Hauptschleife wird also nicht geordnet verlassen. Ich würde die Schaltfläche einfach mit der `close()`-Methode des Fensters verbinden. Standardeinstellung von Qt ist, dass die Anwendung beendet wird, wenn kein Fenster mehr offen ist.
“All tribal myths are true, for a given value of 'true'.” – Terry Pratchett, The Last Continent
Antworten