Tkinter für Zope authorisieren ?

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

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)
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

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

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:
snakeseven
User
Beiträge: 408
Registriert: Freitag 7. Oktober 2005, 14:37
Wohnort: Berlin
Kontaktdaten:

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: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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.
snakeseven
User
Beiträge: 408
Registriert: Freitag 7. Oktober 2005, 14:37
Wohnort: Berlin
Kontaktdaten:

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
Antworten