Latein Vokabel- und Grammatiktrainer

Code-Stücke können hier veröffentlicht werden.
BlackJack

Was für einen Fehler bekommst Du denn und wo!?
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

`vokabeln` ist auch ein guter Name für jene Liste :)
Benutzeravatar
klaus
User
Beiträge: 88
Registriert: Samstag 23. Juni 2007, 09:33
Wohnort: Kaufbeuren
Kontaktdaten:

Ok, dnn benenne ich es in vokabeln um.
Was fürn Fehler des ist weiß ich nicht, ich schau mal kurz nach und edite des dann. War aber keiner der schonmal bei irgendeinem Programm von mir aufgetreten ist.

edit: ich habs grad nochmal ausprobiert, jetzt hats funktioniert.
Der Fehler ist bis jetzt immer dann aufgetreten, wenn ich "er schmückt" (ornat) eingegeben habe. Ich habs mit "er schmuckt" (also ohne ü) probiert und da gings. Kann des daran liegen, das ich die Funktion bis jetzt immer über "run script" definiert habe, letztes mal (wo der Fehler auftrat) aber die from ... import * Anweisung benutzt habe?
Benutzeravatar
klaus
User
Beiträge: 88
Registriert: Samstag 23. Juni 2007, 09:33
Wohnort: Kaufbeuren
Kontaktdaten:

Hi,

Ich bin jetzt fertig mit Vokabeln tippen und hab jetzt noch zwei fragen:
1. Wie kann ich des machen, dass ich eine Benutzeroberfläche erstell, die dann die lateinischen Vokabeln anzeigt, ein Feld hat wo man die deutsche Bedeutung eingeben kann und die dann die korrekte Bedeutung anzeigt (bzw. "Richtig" wenn die Vokabel gewusst wurde).

2. Kann ich das ganze in eine .exe-Datei umwandeln, so dass man nicht immer erst die Datei mit "Edit with IDLE" öffnen, dann auf "Run Script" klicken und dann die Funktion latein() aufrufen muss.

Wäre froh wenn ihr mir helfen könntet.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

klaus hat geschrieben:1. Wie kann ich des machen, dass ich eine Benutzeroberfläche erstell, die dann die lateinischen Vokabeln anzeigt, ein Feld hat wo man die deutsche Bedeutung eingeben kann und die dann die korrekte Bedeutung anzeigt (bzw. "Richtig" wenn die Vokabel gewusst wurde).
Mit einem GUI-Toolkit?! Hast ja Tkinter, wxPython, PyGTK und pyQt zur Auswahl.
klaus hat geschrieben:2. Kann ich das ganze in eine .exe-Datei umwandeln, so dass man nicht immer erst die Datei mit "Edit with IDLE" öffnen, dann auf "Run Script" klicken und dann die Funktion latein() aufrufen muss.
Ja, aber wozu? Du kannst auch dem Skript sagen, dass es bei einem Doppelklick ``latein()`` (oder was auch immer) aufrufen soll.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
klaus
User
Beiträge: 88
Registriert: Samstag 23. Juni 2007, 09:33
Wohnort: Kaufbeuren
Kontaktdaten:

OK, werd ich wohl so machen. Mit Toolkits hab ich mich zwar noch nicht auseinandergesetz, aber ich werds schon hinkriegen.
Den Aufruf der Funktion latein() muss ich dann einfach hinter der Definition in das Script reinschreiben, oder?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

klaus hat geschrieben:Den Aufruf der Funktion latein() muss ich dann einfach hinter der Definition in das Script reinschreiben, oder?
Am besten so:

Code: Alles auswählen

if __name__ == '__main__':
    latein()
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
klaus
User
Beiträge: 88
Registriert: Samstag 23. Juni 2007, 09:33
Wohnort: Kaufbeuren
Kontaktdaten:

stimmt, hab ich vergessen, danke
Benutzeravatar
klaus
User
Beiträge: 88
Registriert: Samstag 23. Juni 2007, 09:33
Wohnort: Kaufbeuren
Kontaktdaten:

Ich hab jetzt mal so nen groben Entwurf gemacht.

Code: Alles auswählen

from Tkinter import *

question = "Hallo!"
solve = "Richtig!"

class Iface:
    def __init__(self, master):        
        frame=Frame(master)
        frame.pack()

        self.question=Label(frame, text=question)
        self.question.pack()

        self.answer=Entry(frame)
        self.answer.pack()

        self.solve=Button(frame, text=solve)
        self.solve.pack()

        self.exit=Button(frame, text="Exit", fg="red", command=frame.quit)
        self.exit.pack()

root=Tk()
iface=Iface(root)
root.mainloop()
Ich hab aber noch ein paar Fragen:

1. Wie soll ich das in mein bisheriges Skript einbinden?

2. Wie krieg ich es hin, das der Inhalt von Entry einer Variablen zugewiesen wird, wenn ich Enter drücke?

3. Wie schaff ich es, dass die nächste Frage erst angezeigt wird, wenn man auf den Button klickt?

4. Wie lege ich die Größe von dem Frame fest
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

klaus hat geschrieben:Ich hab aber noch ein paar Fragen:

1. Wie soll ich das in mein bisheriges Skript einbinden?

2. Wie krieg ich es hin, das der Inhalt von Entry einer Variablen zugewiesen wird, wenn ich Enter drücke?

3. Wie schaff ich es, dass die nächste Frage erst angezeigt wird, wenn man auf den Button klickt?

4. Wie lege ich die Größe von dem Frame fest
Ich glaube du hast hier das falsche Forum erwischt und viele Fragen erledigen sich schon, wenn man die Tkinter-Dokumentation lesen würde.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
klaus
User
Beiträge: 88
Registriert: Samstag 23. Juni 2007, 09:33
Wohnort: Kaufbeuren
Kontaktdaten:

Hi,

Ich wollte gerade ein Programm erstellen, das in einer endlosschleife drei Fragen stellt und dann versuchen, die GUI erstmal dort zu testen. Dabei ist allerdings ein Fehler aufgetreten, den ich nicht verstehe. Hier mal der Code:

Code: Alles auswählen

voklist = [["a ", "b", 0], ["c ", "d", 0], ["e", "f", 0]

def frage(data):
    question, solve, stat = data
    solution = solve.split(", ")
    answer = raw_input(question)
    if answer in solution:
        print "Richtig!"
        data[2] = data[2] + 2
        return 1
    else:
        print "Falsch! Richtig ist: ", solve
        data[2] = data[2] + 1
        return 0

def quiz():
    while 1:
        for element in voklist:
            correct = frage(element)
            counter = counter + 1
            if correct == 1:
                points = points + 1
            print

if __name__ == __main__:
    quiz()
Und hier der Fehler:

Code: Alles auswählen

  File "C:\Py4Kids\mylib\tkquiz.py", line 3
    def frage(data):
      ^
SyntaxError: invalid syntax
wäre froh, wenn ihr mir sagen könntet, wieso hier ein Syntax-Fehler auftritt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hallo Klaus!

Code: Alles auswählen

voklist = [["a ", "b", 0], ["c ", "d", 0], ["e", "f", 0]]
Da war wohl eine Klammer zu wenig.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
klaus
User
Beiträge: 88
Registriert: Samstag 23. Juni 2007, 09:33
Wohnort: Kaufbeuren
Kontaktdaten:

Danke Gerold: Hab's ausgebessert.
Es gab zwar immer noch ein paar Fehler, aber die konnte ich selber beheben. Ich hab bloß nicht verstanden was die IDLE wollte, weil sie "def" markiert hat (und nicht den Ort wo die Klammer gefehlt hat).

edit: Thread unter "Tkinter / GUI in Programm integrieren" weitergeführt. ==> http://www.python-forum.de/topic-12058.html

wenn der Vokabeltrainer mal komplett fertig ist, wird er auf der Seite www.juggleclips.de.vu im Menü unter Hobbies / Python zu finden sein.
Antworten