Fehler: AttributeError: 'str' object has no attribute 'get'

Fragen zu Tkinter.
Gast

Fehler: AttributeError: 'str' object has no attribute 'get'

Beitragvon Gast » Sonntag 31. Juli 2005, 12:55

Hallo Leute, habe einen Fehler in diesem Programm mit dem get Befehl:

Code: Alles auswählen

from time import*
from winsound import*
from Tkinter import*
def Start(Button):
    fenster = Tk()
    fenster.deiconify()
    fenster.title('Vorlesen')
    S = Entry(fenster)
    Button = Button(fenster,
                        text='Text vorlesen', command=Lesen)
    S.pack(padx=10, pady=10)
    Button.pack(pady=10)
    fenster.mainloop()
def Lesen():
    global S
    S=(S)
    S = S.get()
    for c in S:
        if c=="A":
            PlaySound('A.wav',1)
            sleep(0.4)
        if c=="B":
            PlaySound('B.wav',1)
            sleep(0.4)
        if c==" ":
            sleep(1)
        if c=="C":
            PlaySound('C.wav',1)
            sleep(0.4)
        if c=="D":
            PlaySound('D.wav',1)
            sleep(0.4)
        if c=="Z":
            PlaySound('Z.wav',1)
            sleep(0.4)
Start(Button)
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Sonntag 31. Juli 2005, 13:10

Ich habe deinen Code in Python Tags gesetzt und frage mich warum du immer alles aus einem Modul in deinen aktuellen Namensraum importierst?
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Re: Fehler: AttributeError: 'str' object has no attribute '

Beitragvon gerold » Sonntag 31. Juli 2005, 19:46

Anonymous hat geschrieben:Hallo Leute, habe einen Fehler in diesem Programm mit dem get Befehl:

Hi!

Du verwendest das Schlüsselwort global falsch. Wenn, dann müsste es in der Funktion start eingesetzt werden. Was soll eingentlich die Zeile mit S = (S)? Ich glaube, du solltest das komplette Programm neu überdenken.

Das soll jetzt nicht bedeuten, dass mein Beispiel absolut super ist, aber so hätte ich es geschrieben (vorausgesetzt ich habe verstanden, was du mit dem Programm eigentlich bewirken möchtest):

Code: Alles auswählen

import time
#import winsound
import Tkinter


#----------------------------------------------------------------------
class SoundPlayer(Tkinter.Tk):
   
    #----------------------------------------------------------------------
    def __init__(self):
        Tkinter.Tk.__init__(self)
        self.title("Vorlesen")
       
        # A
        self.chk_a_var = Tkinter.StringVar()
        self.chk_a = Tkinter.Checkbutton(
            text = "Lied A",
            variable = self.chk_a_var,
            onvalue = "1",
            offvalue = "0"
        )
        self.chk_a.pack()
        # B
        self.chk_b_var = Tkinter.StringVar()
        self.chk_b = Tkinter.Checkbutton(
            text = "Lied B",
            variable = self.chk_b_var,
            onvalue = "1",
            offvalue = "0"
        )
        self.chk_b.pack()
       
        # Button
        self.btn_vorlesen = Tkinter.Button(
            text="Text vorlesen",
            command=self.lesen
        )
        self.btn_vorlesen.pack(padx=10, pady=10)
   
    #----------------------------------------------------------------------
    def lesen(self):
        if self.chk_a_var.get() == "1":
            print "Play Sound A"
            time.sleep(0.4)
        if self.chk_b_var.get() == "1":
            print "Play Sound B"
            time.sleep(0.4)

#----------------------------------------------------------------------
if __name__ == "__main__":
    sound_player = SoundPlayer()
    sound_player.mainloop()

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Gast

Beitragvon Gast » Mittwoch 3. August 2005, 11:31

HAllo,
Die Zeile mit S = (S) ist mir beim kopieren versehentlich mit reingerutscht.
Ich wollte mich erstmal für den Vorschlag von Anonymous bedanken.
Danke!Danke!Danke!Danke!Danke!Danke!Danke!Danke!Danke!Danke!
Ich meinte es aber ein bisschen anders und zwar wollte ich ein Text-Widget, dessen inhalt in die einzelnen Buchstaben zerlegt wird vorlesen lassen.Ist in dem Text-Widget z.B. das Wort "Hallo" soll das Programm die Wave-Datein "H","A","L","L" und "O" wiedergegeben.
Ich freue mich schon über weitere Tipps.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Mittwoch 3. August 2005, 12:19

Anonymous hat geschrieben: und zwar wollte ich ein Text-Widget, dessen inhalt in die einzelnen Buchstaben zerlegt wird vorlesen lassen.Ist in dem Text-Widget z.B. das Wort "Hallo" soll das Programm die Wave-Datein "H","A","L","L" und "O" wiedergegeben.

Hi!

Wenns weiter nichts ist... :-)

Code: Alles auswählen

import time
#import winsound
import Tkinter


#----------------------------------------------------------------------
class SoundPlayer(Tkinter.Tk):
   
    #----------------------------------------------------------------------
    def __init__(self):
        Tkinter.Tk.__init__(self)
        self.title("Vorlesen")
       
        # Entry
        self.e_textfeld = Tkinter.Entry()
        self.e_textfeld.pack(padx=10, pady=10)
       
        # Button
        self.btn_vorlesen = Tkinter.Button(
            text="Text vorlesen",
            command=self.lesen
        )
        self.btn_vorlesen.pack(padx=10, pady=10)
   
    #----------------------------------------------------------------------
    def lesen(self):
        text = self.e_textfeld.get()
        if text:
            for item in text:
                print "Vorzulesender Buchstabe:", item
                time.sleep(0.4)
        else:
            print "Nichts vorzulesen"


#----------------------------------------------------------------------
if __name__ == "__main__":
    sound_player = SoundPlayer()
    Tkinter.mainloop()


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

Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Gast

Beitragvon Gast » Mittwoch 3. August 2005, 12:39

Ich danke für die schnelle Hilfe! :D
War genau das,was ich gemint habe.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder