Tkinter für Zope authorisieren ?

Django, Flask, Bottle, WSGI, CGI…
Benutzeravatar
snakeseven
User
Beiträge: 405
Registriert: Freitag 7. Oktober 2005, 14:37
Wohnort: Berlin
Kontaktdaten:

Tkinter für Zope authorisieren ?

Beitragvon snakeseven » Sonntag 4. Dezember 2005, 16:59

Mühsam nährt sich das Eichhörnchen..
Also Zope installiert und Pythonscript reingeladen (Add: Script (Python)):

Code: Alles auswählen

import string
from Tkinter import *

root = Tk()

fo = open ('G:/AlleNamen/Fnamen.txt')
allestrings = fo.readlines()
fo.close()

# Erzeugen der Scrollbar
scb = Scrollbar(root, orient="vertical")

# Erzeugen der Listbox, Verbindung mit der Scrollbar
li = Listbox(root, height=5, yscrollcommand=scb.set)
scb["command"] = li.yview

# Einlesen der Namen in die Listbox
for z in allestrings:
    li.insert(END,string.rstrip(z))

#Anzeigen von Listbox und Scrollbar
li.pack(side="left")
scb.pack(side="left",fill="y")

root.mainloop()



ergibt dann in Zope (Doppelklick auf Dateinamen + 'Test') folgenden Error:

Code: Alles auswählen

Error Type: ImportError
Error Value: import of "Tkinter" is unauthorized


Wie kriege ich Tkinter authorisiert ? Habe was von chmod 755 script.py gelesen, aber das sieht mir eher nach UNIX aus ?

Daaanke ! Seven (der bald durchdreht)
Benutzeravatar
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Beitragvon mitsuhiko » Sonntag 4. Dezember 2005, 17:55

Was hat TKinter in einer Webanwendung verloren?
TUFKAB – the user formerly known as blackbird
Benutzeravatar
snakeseven
User
Beiträge: 405
Registriert: Freitag 7. Oktober 2005, 14:37
Wohnort: Berlin
Kontaktdaten:

Beitragvon snakeseven » Sonntag 4. Dezember 2005, 19:44

blackbird hat geschrieben:Was hat TKinter in einer Webanwendung verloren?


Meine Anwendung (die LB ist nur ein Auszug) verarbeitet Audiomaterial und verwendet dazu die Snack Bibliothek. Snack läuft widerum nur mit Tkinter. Auszug aus dem Manual:

Code: Alles auswählen

The beginning of a program that uses Snack might look like:

from Tkinter import *
root = Tk()
import tkSnack
tkSnack.initializeSnack(root) 


Also, wenn Snack nur mit Tkinter und Tkinter unter Zope nicht läuft, kann ich die Applikation innerhalb einer Webanwendung vergessen. :cry:
Benutzeravatar
snakeseven
User
Beiträge: 405
Registriert: Freitag 7. Oktober 2005, 14:37
Wohnort: Berlin
Kontaktdaten:

Beitragvon snakeseven » Sonntag 4. Dezember 2005, 22:33

Aber egal, auch dieses peinlich simple Beispiel läuft nicht.

Code: Alles auswählen

for i in range (10):
   print"blablabla"


Jedenfalls sehe ich nichts. Wie kann ich testen, ob ein Pythonscribt unter Zope läuft oder nicht, wenn ich gar nix sehe ? Bestimmt superblöde Frage, aber ich bin ja auch noch neu hier :wink:
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Re: Tkinter für Zope authorisieren ?

Beitragvon gerold » Montag 5. Dezember 2005, 10:39

snakeseven hat geschrieben:Mühsam nährt sich das Eichhörnchen..
Also Zope installiert und Pythonscript reingeladen (Add: Script (Python)):

Hi Seven!

Internetanwendungen laufen auf einem **SERVER** und Anwendungen mit grafischer Benutzeroberfläche auf einem **DESKTOP**. Mische diese Anwendungsarten nur dann, wenn du dich in beiden Bereichen *gut* auskennst, sonst wirst du ins Schleudern kommen.

Wie im ZopeBuch zu lesen ist, haben Objekte vom Typ "Script (Python)" nicht alle Rechte, die ein normales Python-Skript im Dateisystem hat. Das ist aus Sicherheitsgründen so und kann nur sehr schwer geändert werden. Sicherheit ist im Internet extrem wichtig, deshalb ist das so.

Möchtest du von Zope aus ein Skript mit mehr Rechten aufrufen, musst du von Zope aus eine "Externe Methode" aufrufen. Diese darf alles, was man mit Python machen kann, läuft aber unter Windows mit dem Python-Interpreter, der mit Zope mitgeliefert wird. Es ist also unabhängig von einem bereits installierten Python. Das betrifft auch die Python-Module wie z.B. TkInter. Damit ein TkInter-Fenster auch aus Python heraus aufgerufen werden kann, musst du ein installiertes TkInter auch in den richtigen Ordner unterhalb der Zope-Ordnerstruktur kopieren. Ich weiß allerdings nicht welche, weil ich nie auf die Idee kommen würde, ein GUI mit einer Webanwendung auf diese Weise zu kombinieren und es deshalb auch nicht ausprobieren werde.

Ein Internetserver-Programm ist dafür ausgelegt, viele Anfragen zu bedienen. Was passiert, wenn du vom Internetserver aus ein GUI-Programm aufrufst, das auf eine Eingabe von dir wartet? Jetzt rufen mehrere Benutzer evt. sogar noch die gleiche URL auf. Für jeden Aufruf würde jetzt das GUI-Programm gestartet werden. Der Speicher ist sofort voll, die Programme können nur noch durch einen Timeout-Mechanismus gekillt werden und Probleme wie, "Was passiert, wenn ich nicht am Windows angemeldet bin?", sind in diesem Szenario noch gar nicht berücksichtigt. Damit möchte ich aufzeigen, welche Problem auf dich zu kommen, wenn du Internet und GUI nicht trennst.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Montag 5. Dezember 2005, 10:44

snakeseven hat geschrieben:Aber egal, auch dieses peinlich simple Beispiel läuft nicht.

Code: Alles auswählen

for i in range (10):
   print"blablabla"


Jedenfalls sehe ich nichts.

Hi Seven!

Dieses Skript liefert nichts zurück. Deshalb siehst du nichts. So ein Objekt vom Typ "Script (Python)" musst du dir wie eine Funktion vorstellen. Zope zeigt dir das an, was von dieser Funktion mit "return" zurück gegeben wird.

Hier zwei Skripte, die etwas zurück liefern:

Code: Alles auswählen

my_list = []
for i in range(10):
    my_list.append(str(i))
return "\n".join(my_list)

Code: Alles auswählen

print "Hallo Welt"
return printed

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs

Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
snakeseven
User
Beiträge: 405
Registriert: Freitag 7. Oktober 2005, 14:37
Wohnort: Berlin
Kontaktdaten:

Beitragvon snakeseven » Montag 5. Dezember 2005, 10:47

Hallo Gerold,

ich kann bei der webbasierten Verwendung meines Python Scriptes natürlich auf die grafische Oberfläche verzichten, das geschieht dann in der aufrufenden Website, aber leider brauchen meine Audioobjekte TKinter (tksnack). Habe auch schon die Entwickler von Snack http://www.speech.kth.se/snack/ angemorst, ob sie mir da helfen können und warte noch auf Antwort.

Gruss, Seven

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder