Seite 1 von 1

Tkinter unter Ubuntu

Verfasst: Freitag 28. März 2008, 19:45
von Pythonierer
Guten Abend!

Ich habe heute Ubuntu Linux mit Wubi neben Windows XP installiert und kann dieses natürlich nur richtig sinnvoll nutzen, wenn zum Beispiel auch Python und Tkinter gehen. So hab ich mir gleich über Synaptic Python 2.5, Tkinter, tcl 8.3, tcl 8.4 und PIL runtergeladen und installiert. Nun kann ich letztere im Terminal auch über "import Tkinter" oder "import ImageTk" importieren und dort ebenfalls ein Fenster mit "root=Tk()", "root.mainloop()" usw. erstellen. Wenn ich aber ein .pyw-File doppelt anklicke, in dem der gleiche Code steht, und dann auf "Run" drücke, erscheint überhaupt nichts. Obwohl alles in der Python-Konsole funktioniert. Wisst ihr, woran das liegen könnte?

Danke schonmal für euer Interesse und hoffentlich bis bald, schließlich gefällt mir Ubuntu ansonsten ausgezeichnet (hab auch schon Skins, Codecs usw. installiert).

Re: Tkinter unter Ubuntu

Verfasst: Freitag 28. März 2008, 20:07
von Leonidas
Pythonierer hat geschrieben:Wenn ich aber ein .pyw-File doppelt anklicke, in dem der gleiche Code steht, und dann auf "Run" drücke, erscheint überhaupt nichts.
"Run"? Wo?

Verfasst: Freitag 28. März 2008, 20:13
von Pythonierer
Naja, wenn ich auf die .pyw doppelklicke kommt ja ein Dialog mit der Auswahl "Run in Terminal", "Display", "Cancel" und "Run". Ich hab auch schon "Run in Terminal" ausprobiert, dann ist letzteres für eine zehntelsekunde oder so erschienen und auch gleich wieder verschwunden. Ich verwende standardmäßig den Nautilus-Browser. In IDLE geht es übrigens auch fehlerfrei, hab ich gerade getestet. Kann also nicht am Code liegen, vielleicht ist es ein Problem mit dem Mainloop oder Nautilus.

PS: Tkinter sieht ja auf Linux echt fatal aus, ich werd mir dann gleich noch den Wrapper für Tile holen, damit das ansehnlicher wird. Auf Windows ist es gar nicht so schlecht.

Ich kann natürlich auch versuchen, meine Programme aus Wine heraus laufen zu lassen, aber das wäre ja die hässlichste Variante auf Erden. :cry:

Verfasst: Freitag 28. März 2008, 21:52
von lunar
Pythonierer hat geschrieben:Kann also nicht am Code liegen, vielleicht ist es ein Problem mit dem Mainloop oder Nautilus.
Weder noch, sondern PEBCAK. Unter Linux funktioniert die Ausführung von Programmen eben anders als unter Windows. Grob gesagt, musst du die Datei ausführbar machen, indem du das x-Bit setzt, und anschließend noch den Shebang setzen. Wie das geht, steht in diversen Tutorials, Wikis und Docs im Netz. Ein guter Anlaufpunkt ist das Ubuntuusers Wiki.
PS: Tkinter sieht ja auf Linux echt fatal aus, ich werd mir dann gleich noch den Wrapper für Tile holen, damit das ansehnlicher wird. Auf Windows ist es gar nicht so schlecht.
Das Aussehen ist nur der offensichtlichste Grund, warum man Tkinter nicht verwenden sollte. Andere Gründe gegen Tkinter gibt dir die Forumssuche. Solltest du ernsthaft GUI-Programmierung tätigen wollen, ist die Benutzung eines der richtigen GUI-Toolkits (Gtk, wxWidgets, Qt 4) nahezu zwingend erforderlich.

Verfasst: Samstag 29. März 2008, 01:06
von Leonidas
Pythonierer hat geschrieben:Ich kann natürlich auch versuchen, meine Programme aus Wine heraus laufen zu lassen, aber das wäre ja die hässlichste Variante auf Erden. :cry:
Gegen Tkinter gibt die sich sicher auch nicht mehr viel.

Nimm besser, wie Lunar meinte, ein modernes Toolkit und kein Relikt alter Zeiten.

Verfasst: Samstag 29. März 2008, 09:23
von numerix
lunar hat geschrieben:Unter Linux funktioniert die Ausführung von Programmen eben anders als unter Windows. Grob gesagt, musst du die Datei ausführbar machen, indem du das x-Bit setzt, und anschließend noch den Shebang setzen.
Ich bevorzuge eine andere Lösung: Im Dateimanager eine Verknüpfung zwischen Dateien mit der Endung .pyw und dem python-Interpreter herstellen. Dann brauche ich kein Shebang und kein x-Bit. Klick auf pyw-Datei im Dateimanager genügt und die Anwendung startet.

Verfasst: Samstag 29. März 2008, 10:07
von veers
pütone, dann tut das bei dir. Und sobald du das ganze weiter gibst geht es da nicht mehr. Sobald du ein CGI schreibst geht das nicht mehr. Der Shebang ist definitiv der richtige weg. Damit kannst du dein Script dann wie jede andere Anwendung verwenden. ;)

Verfasst: Samstag 29. März 2008, 10:51
von lunar
pütone hat geschrieben:
lunar hat geschrieben:Unter Linux funktioniert die Ausführung von Programmen eben anders als unter Windows. Grob gesagt, musst du die Datei ausführbar machen, indem du das x-Bit setzt, und anschließend noch den Shebang setzen.
Ich bevorzuge eine andere Lösung: Im Dateimanager eine Verknüpfung zwischen Dateien mit der Endung .pyw und dem python-Interpreter herstellen. Dann brauche ich kein Shebang und kein x-Bit. Klick auf pyw-Datei im Dateimanager genügt und die Anwendung startet.
Bitte poste diese "Lösung" zur Ausführung von Python-Dateien mal in einer der Linux-Newsgroups... auf diesen Flamewar freue ich mich schon ;)

Im Ernst, dieser Weg ist schlicht falsch. Zum einen gibt es kein einheitliches System für Dateityp-Verknüpfungen unter den verschiedenen Desktopumgebungen. Auf der Konsole existiert sowas gar nicht (es sei denn, man nutzt fish oder ähnlichen Murks). Zum anderen ist dieser Ansatz bei Skripten, die Kommandozeilen-Argumente erfordern, von vorneherein zum Scheitern verurteilt. Außerdem können Skripte auf diese Weise nicht von anderen Prozessen ausgeführt werden.

Außerdem nutzt nicht jeder diese netten graphischen Dateimanager ;)

Der Shebang und das x-Bit sind aus guten Grund der bevorzugte Weg zum Ausführen von Python-Skripten. Nichts für ungut, aber auch dir scheinen hier gewissen Linux-Grundlagen zu fehlen ;)

Verfasst: Samstag 29. März 2008, 11:12
von numerix
So sehr ich das Forum ja schätze für schnelle Antworten und fundierte Informationen, so sehr bedaure ich gelegentlich die Tendenz, die Postings anderer erst einmal zu kritisieren - kommt natürlich auch darauf an, wer gepostet hat.

@lunar:

Ich habe doch gar nicht gesagt, dass dein Weg schlecht wäre oder meiner besser. Ich habe nur gesagt, was ich bevorzuge, und zwar aus guten Gründen:

Ich kann meinen Dateimanager so wie beschrieben konfigurieren, und zwar auch so, dass er bei pyw-Dateien kein Konsolenfenster öffnet, bei py-Dateien schon. Also bekommen GUI-Anwendungen von mir die Endung pyw und ich muss mich nicht nach jeder Veränderung am Skript wieder darum kümmern, ob das x-Bit gesetzt ist oder nicht. Einfach klicken und es startet. So brauche ICH das. Natürlich ist die Lösung abhängig vom Dateimanager, und natürlich ist das nicht der sinnvolle Weg, wenn man ein Programm an andere weitergibt. All das habe ich auch nicht behauptet.

Aber warum soll ich den "aus guten Gründen bevorzugten Weg zum Ausführen von Python-Skripten" auf meinem lokalen System einsetzen, wenn es für mich einen komfortableren Weg gibt? Daraus auf das Fehlen von Linxu-Grundlagen zu schließen .. naja.

Verfasst: Samstag 29. März 2008, 11:26
von veers
Lunar hat geschrieben:Zum einen gibt es kein einheitliches System für Dateityp-Verknüpfungen unter den verschiedenen Desktopumgebungen.
Gibt es:
http://standards.freedesktop.org/shared ... ec/latest/ :wink:

Verfasst: Samstag 29. März 2008, 11:30
von Rebecca
pütone: Naja, dann hast du vlt. deinen Post etwas ungluecklich formuliert. Da der OP Linux-Neuling ist, haette er den Eindruck bekommen koennen, dass deine private Spezialloesung allgemein gueltig ist.

PS: Das x-Bit sollte sich nicht aendern, wenn du die Datei editierst.

Verfasst: Samstag 29. März 2008, 11:35
von lunar
veers hat geschrieben:
Lunar hat geschrieben:Zum einen gibt es kein einheitliches System für Dateityp-Verknüpfungen unter den verschiedenen Desktopumgebungen.
Gibt es:
http://standards.freedesktop.org/shared ... ec/latest/ :wink:
Ok, ich verbessere mich: Es gibt in der Realität kein einheitliches System für Dateityp-Verknüpfungen ;)

KDE und Gnome kümmern sich nämlich trotzdem nicht darum ;)

Und irgendwo macht das auch wenig Sinn. PDF-Dateien kann ich im Konqueror direkt mit dem KPDF-KPart anzeigen lassen. Gnome dagegen kann mit KParts nicht wirklich etwas anfangen ;)

Verfasst: Samstag 29. März 2008, 12:06
von numerix
Rebecca hat geschrieben:Naja, dann hast du vlt. deinen Post etwas ungluecklich formuliert. Da der OP Linux-Neuling ist, haette er den Eindruck bekommen koennen, dass deine private Spezialloesung allgemein gueltig ist.
Ich finde gerade, dass ich ihn erkennbar nicht allgemeingültig formuliert habe, sondern bewusst immer davon geschrieben habe, wie "ich" es mache.
Hätte ja sein können, dass der OP das so bei sich auch mal ausprobieren wollte, ob es funktioniert.
Rebecca hat geschrieben:Das x-Bit sollte sich nicht aendern, wenn du die Datei editierst.
Hast Recht!

Da ich häufiger nach Änderungen (sicherheitshalber) unter einem neuen Dateinamen abspeichere, habe ich das Problem mit dem x-Bit dann trotzdem.

Verfasst: Samstag 29. März 2008, 12:26
von lunar
pütone hat geschrieben:Da ich häufiger nach Änderungen (sicherheitshalber) unter einem neuen Dateinamen abspeichere, habe ich das Problem mit dem x-Bit dann trotzdem.
Biete es sich da nicht an, einfach eine Versionsverwaltung zu nutzen?

Verfasst: Samstag 29. März 2008, 13:16
von Leonidas
lunar hat geschrieben:Ok, ich verbessere mich: Es gibt in der Realität kein einheitliches System für Dateityp-Verknüpfungen ;)

KDE und Gnome kümmern sich nämlich trotzdem nicht darum ;)
Bin zwar momentan nicht an GNOME, weil ich Safari anteste, aber dem System Admin Guide nach zu Urteilen versteht GNOME durchaus XDG shared mime. Wie das bei KDE4 ist weiß ich nicht.

Verfasst: Samstag 29. März 2008, 13:41
von lunar
Leonidas hat geschrieben:
lunar hat geschrieben:Ok, ich verbessere mich: Es gibt in der Realität kein einheitliches System für Dateityp-Verknüpfungen ;)

KDE und Gnome kümmern sich nämlich trotzdem nicht darum ;)
Bin zwar momentan nicht an GNOME, weil ich Safari anteste, aber dem System Admin Guide nach zu Urteilen versteht GNOME durchaus XDG shared mime. Wie das bei KDE4 ist weiß ich nicht.
Iirc versteht auch KDE 3 schon shared mime. Allerdings verwalten beide DEs eigene Mimedatenbanken, und zwar aus den eben angesprochenen Gründen heraus. Wenn ich im Kontrollzentrum einstelle, 'application/pdf' mittels der KPDF-KPart-Komponente einzubetten, kann Gnome damit nämlich wenig anfangen ;)