Gibt es eine Möglichkeit, die Python-Tkinter-Bibliothek zu verwenden? Wenn ich versuche, sie zu importieren, erhalte ich nur eine Fehlermeldung, dass sie nicht existiert.
Siehe diese Antwort von Paul RE: Gibt es in JMP18.0.0 eine Liste mit Python-Bibliotheksnamen?
Fettdruck von mir hinzugefügt
Die einzigen „installierten“ Bibliotheken sind die Standardbibliotheken, die mit einem Standard-Python 3.11.x von Python.org verteilt werden, abzüglich einiger weniger , die in der eingebetteten Umgebung möglicherweise nicht gut funktionieren . Dies sind vor allem: venv und tkinter . Und ein paar triviale wie turtle und hello.
Das Problem besteht darin, dass TkInter und andere GUI-Bibliotheken für Python annehmen, dass Python die „Ausführungsschleife“ des Hauptprogramms kontrolliert, aber bei eingebettetem Python die Hostanwendung (JMP) die Ereignisschleife der Haupt-GUI kontrolliert. Dies verursacht alle möglichen Probleme, hauptsächlich Instabilität und Abstürze, da beide um die Kontrolle über die Ereignisschleife kämpfen. Das Öffnen eines Tk-Fensters (oder sogar eines Matplotlib-Fensters) ist häufig problemlos, solange Sie das Fenster nicht schließen, während JMP noch läuft... Wenn Sie das Fenster schließen, können mehrere Probleme auftreten. Ich habe alle diese schon gesehen: JMP wird beendet, weil die Python-Benutzeroberfläche entschieden hat, dass das letzte geschlossene Fenster die Anwendung beenden sollte, aber das ist JMP; eine Beschädigung des Menüsystems in JMP, da die Python-Benutzeroberfläche dazu führt, dass andere Ressourcen freigegeben werden, wenn das Fenster geschlossen wird; und einfach kurz darauf abstürzt.
Eines der Dinge, die untersucht werden, ist das Einblenden von JMP-UI-Fenstern, um darin zu zeichnen und Steuerelemente hinzuzufügen. Ich habe bereits Beispielcode in 18 erstellt, bei dem mit run_jsl() ein Dateiauswahldialogfeld angezeigt wird. JMP Python in der Integration, das JMP-Fenster steuert, hat nicht dieselben Probleme wie eine externe Benutzeroberfläche, die denkt, Python habe die volle Kontrolle.