Seite 1 von 2

Fragen zu Python

Verfasst: Montag 20. Juli 2009, 09:33
von Rise Against
So ich bin Neuling hier und jetzt weiß ich nicht wo ich das am besten reinstellen sollte..

Meine erste Frage:

Kann man einen Klick auf einen Button simulieren und diesen dann alle z.B. 10 sekunden wiederholen?

Meine zweite Frage:

Wie kann man ein JavaScript in einem Python Script aufrufen..


ich danke schon jetzt mal für die Antworten

mfg RA

Re: Fragen zu Python

Verfasst: Montag 20. Juli 2009, 09:58
von hendrikS
Kann man einen Klick auf einen Button simulieren und diesen dann alle z.B. 10 sekunden wiederholen?
Gab hier neulich ein TKinter Beispiel dazu. Musst mal n'bisschen suchen. Habs auf die Schnelle nicht gefunden.
Wie kann man ein JavaScript in einem Python Script aufrufen.
Vielleicht mit subprocess. Solltest Du Win oder Mac Nutzer sein, kannst Du Dir das Binary von http://www.stanford.edu/class/cs242/spidermonkey/ downloaden.

Verfasst: Montag 20. Juli 2009, 10:10
von Rise Against
Danke erstmal für die Antwort..

da ich auch noch ein Anfänger in Sachen Python bin kann ich jetzt mit "TKinter" nichts anfangen.. ich werde mal ein bisschen suchen aber wenn jemand konkretere Lösungsvorschläge hätte wäre das super.

zu dem Thema JavaScript einbinden, die Frage hab ich blöd gestellt, eigentlich meinte ich wie man das online einbinden kann , also man hat ne HTML Page, nen JavaScript , PythonQuelltext und wie man dann im Pythonquelletxt eine JavaScript Funktion aufruft.

mfg RA

Verfasst: Montag 20. Juli 2009, 10:56
von hendrikS
Der Python Interpreter ist nun mal keine eierlegende Wollmilchsau and kann nur Python. Wenn Du JavaScript ausführen willst musst Du das mit einem Tool machen, das das kann.

Verfasst: Montag 20. Juli 2009, 11:24
von dahaze
Dies müsste der Beitrag gewesen sein:
http://www.python-forum.de/topic-18812.html?

Gruß, Simon

Verfasst: Montag 20. Juli 2009, 11:26
von snafu
Ich könnte da die Engine WebKit empfehlen. Läuft sowohl unter PyGtk als auch unter PyQt. Du machst dir dann ein Fenster, wo du die Seite lädst und dann auf den Kontext zugreifst, um deine Funktionen darauf auszuführen. In diesem Thread habe ich mal sowas in der Art gemacht.

Falls du Buttons von Webseiten meinst, solltest du dir mal mechanize anschauen (eine Suche im Forum sollte genug dazu ausspucken).

Verfasst: Montag 20. Juli 2009, 12:07
von Rise Against
Danke erstmal für die Antworten.

Also ich habs jetzt mal hiermit Probiert:

Code: Alles auswählen

<%
	req.write('<form name = "form" action="/.py?application=camera&action=take_picture_silent" method="post"><br><input name = "button1" class="submitButton" value="Bild manuell aktualisieren" type="submit"></form>')
	req.write('<div style="margin:1em" id="imagebox"><img id="cameraimage" alt="" src="' + controller.link(action='get_image', params={'__':str(time.time())}) + '" /></div>')
	forms = get_document().forms
	form = forms[0]
	form.submit()
%>
Aber irgendwie geht das nicht. Ich bin in Sachen Python absoluter Anfänger also würde ich mich sehr über jede nur erdenkliche Hilfe freuen.

Verfasst: Montag 20. Juli 2009, 12:17
von EyDu
"Irgendwie geht das nicht" ist eine äußerst schlechte Beschreibung für einen Fehler. Was genau kommt denn für ein Fehler und was ist die erwartete Ausgabe?

Da Du erst angefangen hast: Hast du das offizielle Python-Tutorial schon durchgearbeitet?

Verfasst: Montag 20. Juli 2009, 12:18
von jerch
@Rise Against:
Dein Code sieht irgendwie nach Webframework aus, das <% %> und req.write() erinnert mich an mod_python.

Ohne nähere Hintergrundinformation bzw. Fehlermeldung kann Dir keiner sagen, was da nicht geht.

Was ist controller, wo kommt get_document() her?

Noch ein Wort zu mod_python:
Um halbwegs standardkonform zu sein, sollte man nicht mit mod_python arbeiten und schon garnicht anfangen, eigene Handler oder psp-Seiten zu schreiben. Der Netzentwicklungszug fährt in Python schon eine Weile in Richtung WSGI, mit mod_python machst Du Dir nur das Leben schwer ;)

Verfasst: Montag 20. Juli 2009, 12:20
von Rise Against
Also.

Die erwartete Ausgabe wäre das er das Formular

Code: Alles auswählen

req.write('<form name = "form" action="/.py?application=camera&action=take_picture_silent" method="post"><br><input name = "button1" class="submitButton" value="Bild manuell aktualisieren" type="submit"></form>')
nocheinmal abschickt ohne das man auf den Button klicken muss


Fehlermeldung ist das ein Internal Server Error kommt.
Und im Error lOg steht
PythonHandler index: Traceback (most recent call last):, referer: http://192.168.1.70/.py?application=camera
PythonHandler index: File "c:\\resource\\mod_python\\apache.py", line 395, in HandlerDispatch\n result = object(req), referer: http://192.168.1.70/.py?application=camera
PythonHandler index: File "E:/Data/Web server/htdocs/index.py", line 13, in handler\n result = hrh.handler(req), referer: http://192.168.1.70/.py?application=camera
PythonHandler index: File "J:\\Framework\\HttpRequestHandler.py", line 102, in handler, referer: http://192.168.1.70/.py?application=camera
PythonHandler index: File "J:\\Framework\\WebAppController.py", line 130, in get_content, referer: http://192.168.1.70/.py?application=camera
PythonHandler index: File "J:\\Framework\\WebAppController.py", line 177, in _build_view, referer: http://192.168.1.70/.py?application=camera
PythonHandler index: File "c:\\resource\\mod_python\\psp.py", line 243, in run\n exec code in global_scope, referer: http://192.168.1.70/.py?application=camera
PythonHandler index: File "E:\\Data\\Web server\\htdocs\\Web_Applications\\Camera\\viewer\\picture.psp", line 27, in ?, referer: http://192.168.1.70/.py?application=camera
PythonHandler index: NameError: name 'get_document' is not defined, referer: http://192.168.1.70/.py?application=camera
Ich hoffe das ist was du meinst

Verfasst: Montag 20. Juli 2009, 12:24
von Defnull
Die Fehlermeldung ist doch eindeutig:

"NameError: name 'get_document' is not defined"

aber abgesehen davon vermute ich, das hier ein Grundlegendes Verständnisproblem vor liegt, was das Zusammenspiel zwischen HTML, JavaScript und Webservern angeht.


Der Webserver benutzt in deinem Fall Python, um HTML Seiten zu generieren. Dabei werden Strings (das rote in deinem Ausschnitt) zum Browser des Benutzers geschickt. Der Webserver hat aber keinen Plan, was in diesen Strings drin steht. Für ihn ist das nur einfacher Text. So etwas wie Formulare und DOM-Bäume gibt es erst, wenn der Text auf Browserseite interpretiert wird. Daher macht der Code in Zeile 5 bis 7 auch keinen Sinn. Das ist JavaScript und hat im Python-Code nix verloren.

Verfasst: Montag 20. Juli 2009, 12:26
von jerch
Du kannst in der Apache-Config PythonDebug=True setzen, dann erhältst Du einen Traceback bei mod_python für Error 500.

Ich betone es nochmal, falls es hier nicht um Code-Maintenance geht, solltest Du einen Bogen um native mod_python-Spielereien machen.

Verfasst: Montag 20. Juli 2009, 12:28
von Rise Against
Das ist kein Apache - Webserver. Es ist ein Webserver der am Handy läuft.

Es geht darum auf die Kamera zuzugreifen ein Foto zuschießen und das alle 5 Minuten zu wiederholen und schließlich dieses Bild am Bildschirm anzuzeigen

Verfasst: Montag 20. Juli 2009, 12:34
von jerch
Am Handy? :?: Läuft der auf dem Handy oder wird er von Handies aus bedient (Handy als bevorzugter Client)?

Grundsätzliche Frage wäre hier, wer Server und wer Client ist.

Verfasst: Montag 20. Juli 2009, 12:36
von Rise Against
Also der Webserver läuft am Handy. Und am Pc rufe ich mittels Firefox die Daten vom Webserver ab. Eine Verbindung zwischen den beiden besteht über ein Ad-Hoc Netzwerk.

Verfasst: Montag 20. Juli 2009, 13:22
von jerch
Am Handy? Wenn Du den Fernseher einschaltest und einen Film schaust, läuft der dann auch am Fernseher?

Wie auch immer, Dein Server, egal wo der jetzt zu verorten ist, ist ein Apache mit mod_python, zumindest sagt das die Fehlermeldung.

Zu Deiner Fragestellung:
Falls es den Requesthandler für die Bilderzeugung schon gibt, könntest Du einfach das Formular mittels Javascript erneut abschicken lassen. Das passiert dann aber nicht in Python sondern clientseitig im Browser.

Verfasst: Montag 20. Juli 2009, 14:26
von Leonidas
Die eigentliche Frage ist eigentlich: Was magst du eigentlich machen? Wie Defnull vermute ich hier ein massives Verstaendnisproblem und da sollten wir erstmal klarstellen welches Problem ueberhaupt geloest werden soll.

Verfasst: Montag 20. Juli 2009, 14:28
von Rise Against
Also ich will, das wenn die Seite aufgerufen wird, das Forumlar alle 10 sek wieder neu verschickt wird, also entweder indem man auf den Submit Button klickt oder das das Formular einfach so verschickt wird über eine Funktion

Verfasst: Montag 20. Juli 2009, 14:36
von EyDu
Die Beschreibung sollte noch ein wenig höher ansetzen:
- Was willst du mit dem Programm (in seiner Gesamtheit) machen?
- Muss es unbedingt ein Webserver sein oder nutzt du diesen einfach? Wäre ein eigener Client bzw. Server nicht besser?

Verfasst: Montag 20. Juli 2009, 14:47
von Rise Against
Das Programm sollte über den Webbrowser abrufbar sein. Es sollte per Buttonklick mit dem Handy ein Bild machen und anzeigen und das am besten alle 10 sekunden aktualisieren.