class frage

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
arT2
User
Beiträge: 10
Registriert: Sonntag 24. Oktober 2004, 18:33
Kontaktdaten:

hallo leute,
warum funktioniert das nicht? ich möchte nur gerne den text ausgeben den ich in meinem notepad window geschrieben habe.

und.. stimmt generell mein code so? bin mir noch sehr unsicher in sachen frames und so. (dank sei der docu das ich soweit gekommen bin bis jetzt *g*)

ganz unten bei "dev save_notepad" habe ich zum testen zwei zeilen code hinzugefügt... aber soweit kommt er nichtmal.

danke für die hilfe



diese fehlermeldung bekomme ich nachdem ich auf den "save" button geklickt habe.

Code: Alles auswählen

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Programme\Python\lib\lib-tk\Tkinter.py", line 1345, in __call__
    return self.func(*args)
  File "E:\PRIVAT\Experiments\_CODING\_python\s-s-s_client\dev\s-s-s_client.py",
 line 92, in save_notepad
    notes = notepad_text.get("1.0", END)
NameError: global name 'notepad_text' is not defined

Code: Alles auswählen

############################################
#  SECRET-SOUND-SERVICE - Info Client 0.2  #
############################################
# Author : arT2                            #
# Email  : mail at tripz dot ch            #
# Home   : http://tripz.ch                 #
# Python : Version 2.3 (#46, Jul 29 2003)  #
############################################

### config #################################
playlist_file = "http://xxxxxx.ch/np.php"
script_name     = "Info Client"
script_version  = "0.2"
script_author   = "xxx"
script_author_m = "xxx"
############################################
from Tkinter import *
from ScrolledText import *

import urllib
############################################

            
# PLAYLIST FRAME
class Playlist:

    def __init__(self,master):

        frame_playlist = Frame(master)
        frame_playlist.grid()

        # windows
        playlist_text = ScrolledText(width=60, height=13)

        # buttons
        b_refresh = Button(master, text="refresh", command=self.get_playlist)

        # labels
        l_playlist = Label(master, text="< playlist")

        # grid manager
        playlist_text.grid(row=0)
        l_playlist.grid(row=0, column=2, sticky=NW)
        b_refresh.grid(row=0, column=2, sticky=SW)


    # fetch playlist
    def get_playlist(self):
        print "DEBUG 1 XXX XX XX XXX X"
##        # clear playlist window
##        playlist_text.delete('1.0', END)
##
##        #get raw data
##        playlist_raw = urllib.urlopen(playlist_file)
##
##        # create list
##        playlist = [playlist_raw.readlines(0)]
##
##        while i < len(playlist):
##            playlist_text.insert(END, playlist[i])





# NOTEPAD FRAME

class Notepad:
    
    def __init__(self,master):

        frame_notepad = Frame(master)
        frame_notepad.grid()

        # windows
        notepad_text = ScrolledText(master, width=60, height=5)

        # buttons
        b_save = Button(master, text="save", command=self.save_notepad)

        # labels
        l_notepad = Label(master, text="< notepad")

        # grid manager
        notepad_text.grid(row=1)
        l_notepad.grid(row=1, column=2, sticky=NW)
        b_save.grid(row=1, column=2, sticky=SW)


    def save_notepad(self):
        notes = "foobarbarbarbarb"
        notes = self.notepad_text.get("1.0", END)
        print "DEBUG 2 XXX XX XX XXX X"





root = Tk()
root.title(script_name + ' ' + script_version)

app = Playlist(root)
app = Notepad(root)

root.mainloop() 
(funktioniert natürlich noch nix wenn man auf die buttons klickt...)
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Hi!

Code: Alles auswählen

...
notepad_text = ScrolledText(master, width=60, height=5)  
...
def save_notepad(self):
        notes = "foobarbarbarbarb"
        notes = self.notepad_text.get("1.0", END) 
Daran liegts. notepad_text ist nur innerhalb von __init__ sichtbar. Mach daraus eine Klassenvariable, dann ist es auch von save_notepad aus sichtbar:

Code: Alles auswählen

self.notepad_text = ScrolledText(...)
Das selbe gilt auch für playlist_text.

Gruß, mawe
Benutzeravatar
arT2
User
Beiträge: 10
Registriert: Sonntag 24. Oktober 2004, 18:33
Kontaktdaten:

vielen dank für die antwort :)

muss ich also "überall" self. vornedran hängen oder nur wenn ich's später wieder "erreichen" will ?

sorry meine ausdrucksweise, mir fehlen noch die worte ;)
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi arT2,

du musst überall da "self." vorne dranhängen, wenn die Variable auch in anderen Methoden verwendet werden soll oder von ausserhalb über instanz.variable angesprochen werden soll. Eben auch schon bei der deklaration. Sonst ist die Variable nur für die jewielige Methode local definiert.


Gruß

Dookie
[code]#!/usr/bin/env python
import this[/code]
Benutzeravatar
arT2
User
Beiträge: 10
Registriert: Sonntag 24. Oktober 2004, 18:33
Kontaktdaten:

ich glaub mir geht ein lichtlein auf


vielen dank ! ich poste sicher nochmal was später :roll:
Benutzeravatar
arT2
User
Beiträge: 10
Registriert: Sonntag 24. Oktober 2004, 18:33
Kontaktdaten:

so, es funktniert schonmal halbwegs und ich hab ein bisschen mehr durchblick. im moment macht mir das laden/schreiben von dateien probleme.

vielleicht kannst du mal kurz die auskommentierten sachen anschauen. das script läuft wenn man es ausführt, und auch die notepad datei wird gespeichert, aber irgendwie ist sie nachher total kaputt und es steht ein comment der von python selber kommt (nehm ich mal an) drin. allgemein mit sonderzeichen haberts noch wie man sieht wenn man den refresh button klickt. mhmmm *denk.lesdocu*

Code: Alles auswählen

### config #################################
playlist_file = "http://s-s-s.ch/np.php"

notepad_file      = "notes.txt"
notepad_file_path = "C:/"

script_name     = "Info Client"
script_version  = "0.0.0.0.0.0.0.0.1/2"
script_author   = "arT2"
script_author_m = "foo@mail.am"
############################################
from Tkinter import *
from ScrolledText import *
from time import gmtime, strftime
import urllib
############################################


### PLAYLIST FRAME
class Playlist:

    def __init__(self,master):

        frame_playlist = Frame(master)
        frame_playlist.grid()

        # text fields
        self.playlist_text = ScrolledText(width=50, height=13)

        # buttons
        b_refresh = Button(master, text="refresh", command=self.get_playlist)

        # labels
        l_playlist = Label(master, text="< playlist")

        # grid manager
        self.playlist_text.grid(row=0)
        l_playlist.grid(row=0, column=2, sticky=NW)
        b_refresh.grid(row=0, column=2, sticky=SW)


    ## fetch playlist
    def get_playlist(self):
        
        # clear playlist window
        self.playlist_text.delete('1.0', END)

        # get raw data
        playlist_raw = urllib.urlopen(playlist_file)
        con_playlist_rawreceived()

        # create playlist
        playlist = playlist_raw.readlines()

        i = 0
        while i < len(playlist):

            # now playing
            if i == 0: # change the look of the first song in list
                self.playlist_text.insert(END, "Now Playing: \n" + playlist[i] + "\nHistory: \n")
                i += 1
                con_playlist_nowplaying()

            # history
            self.playlist_text.insert(END, playlist[i])
            i += 1

        con_playlist_history()




### NOTEPAD FRAME
class Notepad:

    def __init__(self,master):

        frame_notepad = Frame(master)
        frame_notepad.grid()

        # text fields
        self.notepad_text = ScrolledText(master, width=50, height=5)

        # buttons
        b_save = Button(master, text="save", command=self.save_notepad)

        # labels
        l_notepad = Label(master, text="< notepad")

        # grid manager
        self.notepad_text.grid(row=1, column=0)
        l_notepad.grid(row=1, column=2, sticky=NW)
        b_save.grid(row=1, column=2, sticky=SW)

##        load_notepad()
##        self.notepad_text.insert(loaded_notes_data)
##        print "inserted!!"


    ## save notepad text
    def save_notepad(self):
        
        # get current notes
        notes = self.notepad_text.get("1.0", END)

        # declare, open
        notes_file = open(notepad_file_path+notepad_file,"w")
        con_notepad_fileopened()

        # write
        notes_file.write(notes)
        con_notepad_filesaved()
        
        # re-insert text
        i = 0

        lines = notes_file.read()
        
        while i > len(lines):
            self.notepad_text.insert("1.0", lines[i])
            i += 1

        # close file
        notes_file.close()
        con_notepad_fileclosed()




##### STARTUP: LOAD NOTEPAD
##def load_notepad():
##    loaded_notes = open(notepad_file_path+notepad_file, "r")
##    print "loaded!!"
##
##    loaded_notes_data = loaded_notes.read()
##    print "readed!!"

    

### CONSOLE MESSAGES

# core
def con_client_startup():
    print "\n------------------------------------------------------------\n-> " + strftime("%H:%M:%S ", gmtime()) + "[" + script_name + " " + script_version + "] startup\n------------------------------------------------------------"
        
def con_client_quit():
    print "------------------------------------------------------------\n-> " + strftime("%H:%M:%S ", gmtime()) + "[" + script_name + " " + script_version + "] quit\n------------------------------------------------------------\n"

# playlist
def con_playlist_rawreceived():
    print "-> " + strftime("%H:%M:%S ", gmtime()) + "[Playlist] raw-data received from: " + playlist_file

def con_playlist_nowplaying():
    print "-> " + strftime("%H:%M:%S ", gmtime()) + "[Playlist] current song generated"

def con_playlist_history():
    print "-> " + strftime("%H:%M:%S ", gmtime()) + "[Playlist] history generated"

# notepad
def con_notepad_fileopened():
    print "-> " + strftime("%H:%M:%S ", gmtime()) + "[NOTEPAD] file \"" + notepad_file + "\" opened"

def con_notepad_filesaved():
    print "-> " + strftime("%H:%M:%S ", gmtime()) + "[NOTEPAD] file \"" + notepad_file + "\" saved"
        
def con_notepad_fileclosed():
    print "-> " + strftime("%H:%M:%S ", gmtime()) + "[NOTEPAD] file \"" + notepad_file + "\" closed"

############################################

con_client_startup() # console message

root = Tk()
root.title(script_name + " " + script_version)

app = Playlist(root)
app = Notepad(root)

root.mainloop() 

con_client_quit() # console message

CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Hoi,

Na, auch ohne Verständnis von Tkinter und allzu großer Erfahrung traue ich mich mal: Man kann ja hinterher meine Kritik kritisieren ;-).

Zunächst einmal ganz allgemein die Anmerkung, daß Du Dir vielleicht angewöhnen solltest gewissen Kommentare zu Funktionen als Docstrings zu schreiben. Also:

Code: Alles auswählen

def somefuntion():
    """
        Little procrastination function:
        Does actually nothing.
    """
    pass
anstelle von

Code: Alles auswählen

#Here I'll do something
def somefunction():
    pass
Aber das ist eigentlich nebensächlich für Dein Problem ...

In "save_notepad" öffnest Du die Datei zunächst zum Schreiben, dann schreibst Du in die Datei, dann versuchst Du aus der Datei zu lesen und schließlich schliesst Du die Datei. Mich wundert, daß das überhaupt funktionieren soll: Eigentlich sollte Python hier sofort einen IOError anzeigen. (Was Dich natürlich nicht hindert zunächst in die Datei zu schreiben.) Also solltest Du Deine Datei in einem anderen Modus öffnen (r+) oder erst schliessen und dann zum Lesen erneut öffnen. Wobei Du letztlich, der Übersichtlichkeit halber, vielleicht einfach zwei kurze Funktionen daraus machen möchtest? (Am Ende hättest Du dann drei: Eine die speichert, eine die Deine Daten lädt und schließlich eine, die diese Daten in auf dem Bildschirm ausgibt. s. u.)

Wenn Du Datein öffnen und Zeile für Zeile bearbeiten willst geht das auch so:

Code: Alles auswählen

x = open('file','r')
for line in x:
    pass
Damit solltest Du Zeile für Zeile bearbeiten können, ab Python >=2.3. Dein Code mit dem while sieht an der Stelle reichlich seltsam aus. Mir ist jedenfalls nicht klar, was Du da machen möchtest - vielleicht passt deshalb auch mein Beispiel nicht.

Ich vermute mit Sonderzeichen meinst Du deutsche Umlaute? Versuche Dich mal in Unicode einzulesen: http://docs.python.org/tut/node5.html. Mit Google schaufelst Du hier noch sehr viel mehr zu Tage und hier im Forum findet sich auf viel Aufschlußreiches (einfach die Suche bemühen und rauspicken, was gefällt). Z.B. könnte Dir Dookies Linebuffermodul Aufschluß geben: http://python.sandtner.org/viewtopic.ph ... ht=unicode Vor allem aber finde ich folgende Seite recht schön gemacht: http://p-nand-q.com/python/unicode_faq.html
Danach wirst Du wohl vielleicht immer noch Fragen haben: Nur zu!

Zur "load_notepad"-Funktion: Sollte eigentlich ok sein - nur was fängst Du damit wie an? Besser wäre es womöglich diese Funktion als Methode der Klasse zu schreiben (noch ein kleines "self" hier und da), die Du auch bei der Initialisierung aufrufen kannst. In dem Moment würdest Du auch self.loaded_data kennen ;-).
Ggf. solltest Du Dir auch überlegen die Daten zu entpacken, je nach Art Deiner Daten (z. B. ein dict anlegen), dann kannst Du auf die strukturierten Daten zugreifen. Das ist natürlich Dir überlassen und würde hier, ich sehe es ein, zu Problemen führen.

Noch was Allgemeines: Vielleicht wäre es gut den entsprechenden Fehlercode auch zu posten, das erleichtert ggf. das Suchen.

Sorry, ich habe ich in den verbose Modus geschaltet und einfach beschrieben, was mir an entsprechenden Stellen u. A. auffiel. Hoffe ich habe trotzdem etwas helfen können.

Gruß und viel Erfolg,
Christian

PS "to read" ist ein unregelmäßiges Verb ;-).
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Von mir auch noch ein paar Anmerkungen.

1. schau daß Deine Programmzeilen nicht zu lang werden, empfohlen werden maximal 78 Zelchen pro Zeile.
Dies kann in Python durch verschiedene Methoden erreicht werden.
Du kannst längere Parameterlisten die in Klammern stehen ohne weiteres in mehrere Zelen packen.

Code: Alles auswählen

        self.playlist_text.insert(END, "Now Playing: \n" + 
                                       playlist[i] +
                                       "\nHistory: \n")
Du kannst Python auch mit einem "\" am ende der zeile zeigen, daß die Zeile in der nächsten weitergeht.

Code: Alles auswählen

        self.playlist_text.insert(END, "Now Playing: \n"\
                                       + playlist[i]\
                                       + "\nHistory: \n")
2. Wenn du etwas dreimal oder öfter brauchst, mach eine Funktion daraus

Code: Alles auswählen

def gmtimestr():
    return strftime("%H:%M:%S ", gmtime())
liefert dir mit einem einfache gmtimestr() immer die aktuelle Zeit als String.
3. Verwende die Stringformatierung mit % statt die Strings mit + zusammenzusetzen.

Code: Alles auswählen

        text = "Now Playing: \n%s\nHistory:\n"
        self.playlist_text.insert(END, text % playlist[i])
oder statt

Code: Alles auswählen

print "\n------------------------------------------------------------\n-> " + strftime("%H:%M:%S ", gmtime()) + "[" + script_name + " " + script_version + "] startup\n------------------------------------------------------------"
besser

Code: Alles auswählen

szm = "-"*60 # sechzig mal minus
print "\n%s\n->%s [%s %s] startup\n%s" % (szm, gmtimestr(),
                                          script_name,
                                          script_version, szm)
Wegen den Umlauten, nimm als erste Zeile in Deinen Pythonscripts

Code: Alles auswählen

# -*- coding: UTF-8 -*-
statt UTF-8 nimm das Encoding welches Dein OS verwendet. Da kannst Du einfach in der Pythonconsole mit

Code: Alles auswählen

>>> import sys

>>> sys.getfilesystemencoding()
herausfinden.


Gruß

Dookie
[code]#!/usr/bin/env python
import this[/code]
Benutzeravatar
arT2
User
Beiträge: 10
Registriert: Sonntag 24. Oktober 2004, 18:33
Kontaktdaten:

wow vielen dank für die ausführlichen antworten! ich setz mich gleich dahinter und check die links und beispiel von euch ab. hoffe ich kann in 2-3 stunden ergebnisse posten.
In "save_notepad" öffnest Du die Datei zunächst zum Schreiben, dann schreibst Du in die Datei, dann versuchst Du aus der Datei zu lesen und schließlich schliesst Du die Datei. Mich wundert, daß das überhaupt funktionieren soll
ja, strange *smile* ich lösch jetzt nochmals das ganze mit dem save_notepad und durchdenke es neu.

Ich vermute mit Sonderzeichen meinst Du deutsche Umlaute?
jep, aber auch z.b "&". denke das steht aber auch in deinen links.
schau daß Deine Programmzeilen nicht zu lang werden, empfohlen werden maximal 78 Zelchen pro Zeile.
warum? könnte es probleme geben (dumme frage evt.)? dank meinem bildschirm (ich liebe ihn) kann ich so lange zeilen ohne probleme am stück "sehen". von dem her lass ichs lieber der persönlichen übersicht wegen.
Wenn du etwas dreimal oder öfter brauchst, mach eine Funktion daraus
gute idee :oops:
Verwende die Stringformatierung mit % statt die Strings mit + zusammenzusetzen.
ah, muss die "strings" section in der docu nochmals besser lesen. thx
Wegen den Umlauten, nimm als erste Zeile in Deinen Pythonscripts
Python-Code: # -*- coding: UTF-8 -*-
das ist aber nur wenn ich in meinem code direkt umlaute verwenden möchte, oder? d.h es ist nacher nicht automatisch okay wenn mein script umlaute verarbeitet. idle haut mir nämlich diese zeile rein wenn ich manchmal einen kommentar geschrieben habe im script mit einem umlaut (# füübar z.b)


so, wie gesagt, ich melde mich dann wenn ich ergebnisse erziehlt habe :)
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Nochmal zu den überlangen Zeilen.
Es geht dabei darum, daß wenn du ein Script weitergibst, oder auch hier im Forum postest, oder vielleicht mal auf einem anderen Rechner anschauen willst. Ist es eben günstiger, wenn die Darstellung auf 80 Zeichen breite möglich ist. Dann braucht eben keiner zu scrollen oder die Zeilen werden schwerer lesbar, wenn der Editor die Zeilen nach 80 Zeichen umbricht.

Idle und Umlaute scheint sowieso etwas verworren zu sein. Ich verwende deshalb und aus anderen Seltsamkeiten von Idle dieses nicht sondern lieber ein Consolefenster, was man als Linuxer eh gewohnt ist.
Du kannst dir ja mal IPython anschauen, anscheinend funktionierts jetzt auch unter Windows:
http://ipython.scipy.org/


Gruß

Dookie
[code]#!/usr/bin/env python
import this[/code]
Benutzeravatar
arT2
User
Beiträge: 10
Registriert: Sonntag 24. Oktober 2004, 18:33
Kontaktdaten:

ola 8)
mein notepad funktioniert schonmal sehr gut (noch ohne umlaute). hänge noch am encoding..

hab' auch den code ein bisschen überarbeitet. (die langen zeilen sind noch da, ich verlier die übersicht sonst :/).

kleine zwischenfrage wegen grid().. wie zum geier krieg ichs hin das sich meine beiden text fenster auch ausbreiten wie bei pack(expand..,fill..). in der docu steht das geht mit sticky=W+E z.b für horizontal ausbreiten. ja das funzt mit den buttons auch. nur nicht mit meinen textfenstern.


Code: Alles auswählen

### config #################################
playlist_file = "http://s-s-s.ch/np.php"

notepad_file      = "notepad.txt"
notepad_file_path = "C:/"

script_name     = "Info Client"
script_version  = "0.2"
script_author   = "arT2"
script_author_m = "x@x.xx"

console_line = "-" * 65

about_text = """%s v%s

by %s (%s)


special thanks to:
- python.org
- python.sandtner.org""" % (script_name, script_version, script_author, script_author_m)

############################################


from ScrolledText import *
from time import gmtime, strftime
from Tkinter import *
import sys
import tkMessageBox
import urllib


##########################################
# FRAMES
##########################################
class Playlist:

    def __init__(self,master):

        frame_playlist = Frame(master)
        frame_playlist.grid()

        l_playlist = Label(master, text="Playlist:")
        self.playlist_text = ScrolledText(width=55, height=13)
        self.b_refresh = Button(master, text="refresh playlist", command=self.get_playlist)

        l_playlist.grid(row=0, column=0, sticky=NW)
        self.playlist_text.grid(row=1, column=0)
        self.b_refresh.grid(row=2, column=0, sticky=W+E)


    def get_playlist(self):
        """ fetch the playlist! """

        self.playlist_text.delete('1.0', END)

        msg_playlist_tryreceive()

        playlist_raw = urllib.urlopen(playlist_file)
        
        msg_playlist_rawreceived()

        playlist = playlist_raw.readlines()

        i = 0
        while i < len(playlist):
            """ create the playlist """

            if i == 0:
                """ change the look of the first song in the list """
                self.playlist_text.insert(END, "Now Playing:\n%s\nHistory: \n" % playlist[i])
                i += 1
                
                msg_playlist_nowplaying()

            self.playlist_text.insert(END, playlist[i])
            """ generate the history (rest of the list) """
            i += 1

        msg_playlist_history()



class Notepad:

    def __init__(self,master):

        frame_notepad = Frame(master)
        frame_notepad.grid()

        l_notepad = Label(master, text="Notepad:")
        self.notepad_text = ScrolledText(master, width=55, height=13)
        b_save = Button(master, text="save your notes", command=self.save_notes)

        l_notepad.grid(row=0, column=1, sticky=NW)
        self.notepad_text.grid(row=1, column=1)
        b_save.grid(row=2, column=1, sticky=W+E)


        startup_data = open(notepad_file, "r")
        """
           load 'notepad_file' at startup and
           inserts content in 'self.notepad_text'
        """

        msg_notepad_fileopened()
        
        for line in startup_data:
            self.notepad_text.insert(END, line)

        msg_notepad_viewupdated()
            
        startup_data.close()

        msg_notepad_fileclosed()

        

    def save_notes(self):
        """
           get current content of 'notepad_text' and
           then simply save it to 'notepad_file'
        """
        current_notes = self.notepad_text.get("1.0", END)

        notepad = open(notepad_file, "w")

        msg_notepad_fileopened()
        
        notepad.write(current_notes)

        msg_notepad_filesaved()

        notepad.close()

        msg_notepad_fileclosed()




############################################
# MENU FUNCTIONS
############################################
def menu_aboutbox():
    tkMessageBox.showinfo("About",about_text)



############################################
# VARIOUS FUNCTIONS
############################################
def current_time():
    return strftime("%H:%M:%S", gmtime())

def callback():
    """ test function """
    print "FOO 1 2 3"



############################################
# CONSOLE MESSAGES
############################################
def msg_client_startup():
    print "\n%s\n%s [%s %s] startup\n%s" % (console_line, current_time(), script_name, script_version, console_line)
        
def msg_client_quit():
    print "%s\n%s [%s %s] quit\n%s\n" % (console_line, current_time(), script_name, script_version, console_line)

def msg_playlist_tryreceive():
    print "%s [Playlist] trying to fetch playlist from: %s" % (current_time(), playlist_file)

def msg_playlist_rawreceived():
    print "%s [Playlist] raw-data received from: %s" % (current_time(), playlist_file)

def msg_playlist_nowplaying():
    print "%s [Playlist] current song generated" % (current_time())

def msg_playlist_history():
    print "%s [Playlist] history generated" % (current_time())

def msg_notepad_viewupdated():
    print "%s [Notepad] window updated" % (current_time())

def msg_notepad_fileopened():
    print "%s [Notepad] file opened" % (current_time())

def msg_notepad_filesaved():
    print "%s [Notepad] file saved" % (current_time())

def msg_notepad_fileclosed():
    print "%s [Notepad] file closed" % (current_time())
############################################



msg_client_startup()

###

root = Tk()
root.title(script_name + " " + script_version)

############################################
# MENU
############################################
menu = Menu(root)
root.config(menu=menu)

controlmenu = Menu(menu)
menu.add_cascade(label=".control", menu=controlmenu)
controlmenu.add_command(label="exit", command=root.quit)

helpmenu = Menu(menu)
menu.add_cascade(label=".info", menu=helpmenu)
#helpmenu.add_command(label="readme...", command=callback)
helpmenu.add_command(label="about", command=menu_aboutbox)

###

app = Playlist(root)
app = Notepad(root)

###

root.mainloop() 

###

msg_client_quit()

############################################
############################################
wird doch immer schicker
Antworten