GUI

Fragen zu Tkinter.
Antworten
infostud
User
Beiträge: 17
Registriert: Donnerstag 13. Mai 2004, 11:12

Hallo
so schauts aus. Ist es richtig? Bin ich auf dem richtigen Wege??? :oops:

Sende nur Teile des Skriptes, damit man nicht vor der Länge erschreckt

Code: Alles auswählen

........
class Anwendung(Frame):
    def __init__(self, master=None):
        Frame.__init__(self, master) # das main window
        self.smp3 = SMP3A2.SMP3s()   #----->Instanz von SMP3s
        self.createMenuBar()         # auf root Window
        self.createButtonBar()       # auch auf root Window
        self.createWidgets()         # Fuelle die main area
        self.createScrollbar()
        #self.as_list()               #----->MP3 Liste zurückgeben
        self.pack()                  # und zeige die main area an dieser Stelle
        self.createStatusbar("ok")   # und wieder auf root Window ganz unten
        self._root().protocol("WM_DELETE_WINDOW", self.endit) # wegen IDLE
        
...........

 def createButtonBar(self):
        self.buttonbar = Frame(self._root())       
        b = Button(self.buttonbar, text="Laden", command=self.smp3.laden) #<-----
        b.pack(side=LEFT)
        b = Button(self.buttonbar, text="Speichern", command=self.smp3.speichern) #<-----
        b.pack(side=LEFT)
        b = Button(self.buttonbar, text="Suchen", command=self.smp3.search) #<-----
        b.pack(side=LEFT)
...........
b = Button(self.buttonbar, text="Alles loeschen", command=self.abbrechen) #<-----
        b.pack(side=RIGHT)
        b = Button(self.buttonbar, text="Abbrechen", command=self.abbrechen) #<-----
        b.pack(side=RIGHT)
        b = Button(self.buttonbar, text="Ok", command=self.smp3.zeige) #<-----
..........
  self.lb = Listbox(self._root(), yscrollcommand=self.scrollbar.set)
        #for i in as_list:                     #<------
            #self.lb.insert(END, str(i))    #<-----
        self.lb.pack(side=LEFT, fill=BOTH)
        self.scrollbar["command"] = self.lb.yview
..........

    #def as_list(self):
        #...
.........
def abbrechen(self):                #<-----  
        self.suche.delete(0, END)
        self.dateiname.delete(0, END)
..........

Code: Alles auswählen

..........
 def search(self,**patterns):
        # uebersetze und kompiliere Patterns
        cpatterns = {}
        for p in patterns:
            if patterns[p] != "": # das passt immer
                epat = "^.*" + string.replace(patterns[p], "*", ".*") + ".*$"
                cpatterns[p] = re.compile(epat)
        # gib Ergebnisliste zurueck
        return [dateiname for dateiname in self.mp3s
                          if testsearch(self.mp3s[dateiname], cpatterns)]
    
    def zeige(self, dateinamen=None):
        if type(dateinamen) == type([]):
            for dateiname in dateinamen:
                MP3s.zeige(self, dateiname)
        else:
            MP3s.zeige(self, dateinamen)

    def speichern(self, speicherdateiname=vorgabespeicherdateiname):
        f = file(speicherdateiname,"w")
        for dateiname in self.mp3s:
            dic = self.mp3s[dateiname]
            for schluessel in dic:
                s = "%s%s%s%s%s\n" % (dateiname, separator, 
                    schluessel, separator, dic[schluessel])
                f.write(s)
        f.close()

    def laden(self, speicherdateiname=vorgabespeicherdateiname):
        self.mp3s = {}
        f = file(speicherdateiname,"r")
        for line in f:
            line = string.replace(line,"\n","")
            [dateiname, schluessel, wert] = string.split(line,separator)
            self.set(dateiname, schluessel, wert)
        f.close()
kann man damit Leben???

Viele Grüße

infostud
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi infostud,

beim ersten script

Code: Alles auswählen

        #self.as_list()               #----->MP3 Liste zurückgeben 
kann da entfallen bzw. müsste

Code: Alles auswählen

        self.smp3_list = self.smp3.as_list()
heissen.

aus

Code: Alles auswählen

        #for i in as_list:                     #<------
            #self.lb.insert(END, str(i))    #<----- 
müsste dann später

Code: Alles auswählen

        for i in self.smp3.as_list():                     # oder self.smp3_list
            self.lb.insert(END, str(i))    #<----- 
werden.

beim 2. script fehlt noch die Methode as_list()

Code: Alles auswählen

    def as_list(self):
        return self.smp3s[:] # Kopie der internen Liste

Gruß

Dookie
Antworten