Tkinter Webanwendung

Fragen zu Tkinter.
Antworten
Tarlanc
User
Beiträge: 4
Registriert: Dienstag 14. Oktober 2008, 19:59

Liebe Tkinter-Pofis,

mittlerweile bin ich (dank euch) ziemlich firm im Programmieren von tkinter, stehe jetzt aber vor einem neuen Problem:
Ich muss eines meiner Programme, dessen GUI komplett in tkinter aufgebaut ist, auf eine Website aufschalten können. Leider habe ich keinen Plan, wie dies funktionieren kann.

Bisher habe ich geschafft:
Einen Apache httpd 2.2 aufsetzen und mit mod_python bestücken.
(funktioniert soweit, dass ich HTML ausgeben kann, 'hallo Welt' funktioniert. Aber: wenn ich tkinter importieren will, heisst es: "ImportError: No module named tkinter"

Gibt es eine einfache Möglichkeit, ein Tkinter-Programm über mod_python laufen zu lassen?
Und wenn nicht: Gibt es eine einfache Möglichkeit, ein Tkinter-GUI sonstwie auf einer Website aufpoppen zu lassen?
Und wenn auch das nicht: Welches Webinterface kommt tkinter nahe genug, dass ich an meinem Programm nicht zu viel verändern muss?

Am liebsten wäre es mir natürlich, wenn jemand einen Kniff weiss, über mod_python ein fertiges Programm mit tkinter aufzurufen.

(P.S: Es muss vorerst nur auf meinem Apache laufen, da habe ich sämtliche erforderlichen Admin-Rechte, leider aber auch sämtliche erforderliche Arbeit :wink: )
BlackJack

@Tarlanc: Vergiss es, das geht so nicht. Du wirst für eine Webanwendung halt auch eine GUI in HTML + vielleicht JavaScript schreiben müssen.
Tarlanc
User
Beiträge: 4
Registriert: Dienstag 14. Oktober 2008, 19:59

BlackJack hat geschrieben:Du wirst für eine Webanwendung halt auch eine GUI in HTML + vielleicht JavaScript schreiben müssen.
Das wollte ich eigentlich vermeiden, da ich Java nicht kann und HTML nicht annähernd das bietet, was ich bräuchte.

Das Importieren von tkinter hat sich mittlerweile erledigt, aber die Seite hängt sich bei diesem Test auf:

Code: Alles auswählen

from mod_python import apache
from Tkinter import *

def handler(req):
    req.content_type = 'text/html'
    req.write('''
<html>
<body>
<h2>Hello world</h2>
</body>
</html>
''')
    dialogfeld(req)
    return apache.OK


def dialogfeld(req):
    fenster = Tk()
    w = Label(fenster, text="Hallo Welt")
    fenster.mainloop()
BlackJack

@Tarlanc: JavaScript ist eine völlig andere Programmiersprache als Java.

Es macht absolut keinen Sinn `Tkinter` importieren zu wollen und dort Fenster zu erstellen. Das Skript läuft auf dem *Server-Rechner* und wenn da überhaupt für den Benutzer unter dem dem der Webserver läuft ein Fenstermanager zur Verfügung steht, hätte der Benutzer am *Client-Rechner* nichts davon.

`mod_python` ist ausserdem nicht wirklich empfehlenswert. Standard ist aktuell eher WSGI als Schnittstelle und dass am besten mit einem Webrahmenwerk. Die gibt's auch schon in ganz klein und einfach, zum Beispiel Bottle oder Flask.

Mit HTML + CSS + JavaScript kann man schon ganz nette GUIs zaubern. Zum Beispiel mit jQuery UI oder Dojo.
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Einzige Möglichkeit für dein Vorhaben wären zwei getrennte Anwendungen. Eine am PC mit Tkinter und eine auf dem Webserver. Beide kommunizieren z.B. via XML-RPC oder SOAP.

Die "Logik" deines Programms steckt dann auf dem Webserver, die Tkinter Software sorgt nur für die visuelle Darstellung. Stichwort MVC oder vergleichbares

Was du machen willst geht aber definitiv nicht
Das schwierigste beim Programmieren ist, sinnvolle Variablen- und Funktionsnamen zu finden :lol:
problembär

BlackJack hat geschrieben:@Tarlanc: JavaScript ist eine völlig andere Programmiersprache als Java.
Das ist natürlich völlig richtig. Erwähnen sollte man aber auch noch, daß (die meisten) Browser auch Applets in Java unterstützen, so daß man die Wahl hat, ob man die Web-GUI in JavaScript oder in Java (mit den Java-Grafiktoolkits AWT oder (neuer) Swing) schreiben will (hier mal ein Beispiel für ein Java Applet, das bei Dir laufen sollte, wenn die Javaunterstützung in Deinem Browser richtig konfiguriert ist), wobei in JavaScript IMHO sehr viel einfacher zu programmieren ist (ist als Skriptsprache Python, Perl usw. gar nicht so unähnlich).
Schon seit einiger Zeit finde ich eigentlich recht schade, daß Browser nicht auch Python so wie JavaScript integriert haben. Wenn das eines Tages so wäre, wäre der Tkinter-Ansatz dann vielleicht möglich. Bis dahin aber leider nicht.

Gruß
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Man kann sowohl in Java-Applets als auch in Silverlight-Programmen Jython bzw. IronPython nutzen %)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Naja, das bringt ihm alles nicht, da er, wenn ich ihn richtig verstanden haben, schon ein mehr oder weniger fertiges Programm hat. Da bleibt ihm nur XML-RPC oder ähnliches und die Anwendung muss er splitten.
Das schwierigste beim Programmieren ist, sinnvolle Variablen- und Funktionsnamen zu finden :lol:
Antworten