Python Qt Programme funktionieren nach Systemwechsel nicht mehr richtig

MacMamba

Neues Mitglied
Thread Starter
Dabei seit
30.05.2004
Beiträge
13
Reaktionspunkte
0
Hallo!

Ich bin von Windows auf Mac OS umgestiegen. Nun funktionieren meine Qt Programme nicht mehr
icon_sad.gif
.
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
 
Noch kann man sich bei macOS ja freie Software installieren wie man will
 
  • Gefällt mir
Reaktionen: dg2rbf
auf den standard pfaden wird dann aber trotzdem wohl das apple installierte genommen.
da muss man wohl noch etwas anpassen, wenn man selbst eine installert.
 
Also so doof wird er nicht sein sorry aber irgendwo kann man die Leute nicht für ganz grenzdebil halten (und das OBWOHL ich hier schon länger dabei bin und viele Threads gesehen habe, die ich darunter einordnen würde)
 
Also so doof wird er nicht sein sorry aber irgendwo kann man die Leute nicht für ganz grenzdebil halten (und das OBWOHL ich hier schon länger dabei bin und viele Threads gesehen habe, die ich darunter einordnen würde)
Warum eigentlich immer dieser Ton?

Ich halte niemanden für doof, den TE schon gar nicht. Ich wollte lediglich auf eine mögliche Fehlerursache hinweisen.
 
  • Gefällt mir
Reaktionen: wegus
Die Fehlerursache "falsche Python Version"? Die schon geklärt war?
 
Abhängig davon wie Python3 installiert wird, kann es trotzdem sein dass manche Aufrufe eben die von Apple standardmäßig installierten Python2-Bibliotheken aufrufen. Und nur auf diese macOS-Eigenheit habe ich hinweisen wollen, ohne irgendwem irgendetwas unterstellen zu wollen.
 
  • Gefällt mir
Reaktionen: dg2rbf
Abhängig davon wie Python3 installiert wird, kann es trotzdem sein dass manche Aufrufe eben die von Apple standardmäßig installierten Python2-Bibliotheken aufrufen.
Da musst Du Python 3 aber völlig absichtlich falsch installieren. Python 3 weiß normalerweise, wo es seine Bibliotheken suchen muss
 
  • Gefällt mir
Reaktionen: dg2rbf
Und das hast du auf macOS installiert?

Was sagt denn "python --version" im terminal? Selbst unter Mojave wird von Apple nur 2.7.10 installiert.

Da hat er die 2.7.10 !

Aber in meinem Python Editor PyCharm, hab ich den Project Interpreter die Python Version 3.7 eingestellt. Er benutzt also nicht die 2.7.
Was mich halt echt wundert ist, dass ich in Windows und MacOs beides den gleichen Editor benutzte und die Python Version identisch ist. Und ich die Buttons aber nicht benutzen kann unter MacOs. Kurioses Phänomen. Ich bin da noch kein Stück weiter.
 
Hallo!

Ich bin von Windows auf Mac OS umgestiegen. Nun funktionieren meine Qt Programme nicht mehr
icon_sad.gif
.
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

Vielleicht eine dumme Frage, aber - unterscheiden sich die Buttons im Typ? Hast du mal den Exit-Button "kopiert" und anderen Code hinterlegt? Bzw. versucht den nicht ausgeführten Code der Buttons über andere Steuerelemente auszuführen? Oder eben einen der nicht funktionierenden Buttons mit einer Trivialfunktion ala "Hello World" zu hinterlegen und zu schauen, ob sie dann auf das Ereignis reagieren? So könntest du das Problem zumindest eingrenzen und herausfinden, ob es ein Problem mit der GUI oder eben ein Code-Problem ist, das durch die Nutzung des Frameworks auf einer anderen Plattform entsteht.
Nach meiner Erfahrung heißt plattformübergreifend leider noch lange nicht "1:1" überall verwendbar. Leider. Daher meine Fragen - muss also nicht ein Versionsfehler etc. sein.

Vertiefte Tipps kann ich hier nicht geben, da ich aus der VisualStudio-welt mit VB+c# komme und mich demnach nicht großartig auf deiner Umgebung auskenne.

Ich hatte sowas ähnliches aber Mal bei einem Framework von Microsoft, das ebenfalls plattformübergreifend funktionieren sollte. Es wurde dort eine "Fill-Methode" verwendet, die aber auf anderen Plattformen murks war und einen Fehler erzeugte, ohne das es einenAbsturz oder eine Compiler-Meldung gab. Es sah also so aus, als wäre alles in Butter - das sind immer die "schönsten" Fehler...
 
Vielleicht eine dumme Frage, aber - unterscheiden sich die Buttons im Typ? Hast du mal den Exit-Button "kopiert" und anderen Code hinterlegt? Bzw. versucht den nicht ausgeführten Code der Buttons über andere Steuerelemente auszuführen? Oder eben einen der nicht funktionierenden Buttons mit einer Trivialfunktion ala "Hello World" zu hinterlegen und zu schauen, ob sie dann auf das Ereignis reagieren? So könntest du das Problem zumindest eingrenzen und herausfinden, ob es ein Problem mit der GUI oder eben ein Code-Problem ist, das durch die Nutzung des Frameworks auf einer anderen Plattform entsteht.
Nach meiner Erfahrung heißt plattformübergreifend leider noch lange nicht "1:1" überall verwendbar. Leider. Daher meine Fragen - muss also nicht ein Versionsfehler etc. sein.

Vertiefte Tipps kann ich hier nicht geben, da ich aus der VisualStudio-welt mit VB+c# komme und mich demnach nicht großartig auf deiner Umgebung auskenne.

Ich hatte sowas ähnliches aber Mal bei einem Framework von Microsoft, das ebenfalls plattformübergreifend funktionieren sollte. Es wurde dort eine "Fill-Methode" verwendet, die aber auf anderen Plattformen murks war und einen Fehler erzeugte, ohne das es einenAbsturz oder eine Compiler-Meldung gab. Es sah also so aus, als wäre alles in Butter - das sind immer die "schönsten" Fehler...


Ich habe alle Buttons manuell angelegt. Der einzige Unterschied ist, dass der Exit Button die Exit-Funktion von Python verwendet, wenn er geklickt wird. Bei den Anderen wird das Click Event an eine vom mir geschriebene Funktion übergeben. Und diese funktionieren auch, hab ich jetzt mal getestet indem ich ein print(Ergebnis) am Ende der Funktion gesetzt habe. Und das Ergebnis wird mir in der Konsole der IDE angezeigt. Das Ergebnis wird anscheinend nur nicht in mein Vorgesehenes Label in der GUI gesendet.
 
Ich habe alle Buttons manuell angelegt. Der einzige Unterschied ist, dass der Exit Button die Exit-Funktion von Python verwendet, wenn er geklickt wird. Bei den Anderen wird das Click Event an eine vom mir geschriebene Funktion übergeben. Und diese funktionieren auch, hab ich jetzt mal getestet indem ich ein print(Ergebnis) am Ende der Funktion gesetzt habe. Und das Ergebnis wird mir in der Konsole der IDE angezeigt. Das Ergebnis wird anscheinend nur nicht in mein Vorgesehenes Label in der GUI gesendet.

Wenn ich das richtig verstehe ist es also nicht der BUTTON, der nicht funktioniert, sondern die Ausgabe eines Inhalts in ein Label als Reaktion auf das Click-Ereignis des Buttons? Dann könnte es schlicht sein, das das Neuzeichnen des Labels nicht funktioniert (der Inhalt ist also da, wird aber nicht vom Steuerelement angezeigt - hatte ich auch mal). Du kannst das testen, indem du z.B. nach der Zuweisung an das Label den Wert aus dem Label neu ausliest und z.B. über print ausgeben lässt. Wird etwas zurückgegeben, ist das Neuzeichnen das Problem. Unter .NET kann man das Redraw-Ereignis auch per Code ausführen - geht sicherlich auch in deiner Umgebung.
Wie vermutet scheint es aber ein Konflikt mit der GUI zu sein, das du vermutlich nur lösen kannst, wenn du an allen möglichen Stellen alternativen bzw. angepassten Code verwendest. Das ist einer der Gründe, warum ich das programmieren in sog. "Multi-Plattformen" recht schnell gelassen habe, da bei komplexeren Programmen selten bis nie alles 1:1 funktionierte. So was nervt - dann kann man auch gleich Plattformoptimierte/native Compiler und Sprachen verwenden.
 
Gute Idee!

Hab ich mal gemacht und er gibt mir das Label zurück. Also funktioniert der Code. Nun ist mir aufgefallen, dass der Wert im Label angezeigt wird, wenn ich mal kurz auf den Desktop klicke. Sprich also das Programmfenster von aktiv auf inaktiv setze. Das hatte ich auch noch nicht.:confused:
 
Gute Idee!

Hab ich mal gemacht und er gibt mir das Label zurück. Also funktioniert der Code. Nun ist mir aufgefallen, dass der Wert im Label angezeigt wird, wenn ich mal kurz auf den Desktop klicke. Sprich also das Programmfenster von aktiv auf inaktiv setze. Das hatte ich auch noch nicht.:confused:

Also scheint es wirklich das Neuzeichnen zu sein, das offenbar erst nach einem Wechsel des Fokus stattfindet. Unter VB gibts hier z.B. den Befehl "doEvents", der u.a. dafür sorgt, das alle bereits abgelaufenen Programmteile mit der GUI synchron sind. Suche nach einem Äquivalent in "deiner" Sprache und du wirst dieses Problem vermutlich lösen können. Am besten dann gleich eine globale Funktion schreiben, die das überall übernimmt. Vermutlich wird es aber - nach meiner Erfahrung - leider nicht bei dieser einen Anpassung bleiben.

Alternativ könntest du auch mal statt eines LABELS ein anderes Steuerelement nehmen, das Text darstellen kann und sich somit grundsätzlich eignet - z.B. eine Textbox, bei der du die Eingabefunktion deaktivierst. Oder einfach mal mit einem neuen Label ausprobieren, das unter MacOS erzeugt wurde. So oder so liegt da wohl leider noch ne Menge Arbeit vor dir - wenn du Pech hast...
 
Also scheint es wirklich das Neuzeichnen zu sein, das offenbar erst nach einem Wechsel des Fokus stattfindet. Unter VB gibts hier z.B. den Befehl "doEvents", der u.a. dafür sorgt, das alle bereits abgelaufenen Programmteile mit der GUI synchron sind. Suche nach einem Äquivalent in "deiner" Sprache und du wirst dieses Problem vermutlich lösen können. Am besten dann gleich eine globale Funktion schreiben, die das überall übernimmt. Vermutlich wird es aber - nach meiner Erfahrung - leider nicht bei dieser einen Anpassung bleiben.

Alternativ könntest du auch mal statt eines LABELS ein anderes Steuerelement nehmen, das Text darstellen kann und sich somit grundsätzlich eignet - z.B. eine Textbox, bei der du die Eingabefunktion deaktivierst. Oder einfach mal mit einem neuen Label ausprobieren, das unter MacOS erzeugt wurde. So oder so liegt da wohl leider noch ne Menge Arbeit vor dir - wenn du Pech hast...


Vielen Dank !!!
 
Zurück
Oben Unten