schleifenproblem oder so...

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
knekke
User
Beiträge: 100
Registriert: Freitag 29. Oktober 2004, 17:23
Wohnort: Schweden

Hallo beisammen,
ich hab hier letzten Monat schonmal gepostet, weil ich zu lernzwecken ein kleines Quiz programmieren wollte. Nach nur 2 minuten wurde mir schon eine Lösung unterbreitet :lol: Danke nochmal an dieser Stelle!

Nun würde ich diesem Quiz gerne ein kleine gui (tkinter) basteln.
Als nOOb liegen meine preferenzen in diesem Fall eindeutig auf funktional und nicht schön..
Mein Ansatz:
Ein Textfenster in dem die fragen erscheinen sollen
4 buttons für 4 mögliche antworten
bei drücken eines buttons soll geprüft werden wahr oder falsch und entsprechende punktevergabe (kommt später),
und die nächste frage soll im textfenster gezeigt werden. und genau das bekomme ich nicht hin :?

Code: Alles auswählen

from Tkinter import *
root = Tk()
nummer = 1     #zeigt an welche frage läuft

def answ1():
    answ=1
    nummer=nummer+1
    print answ   #nur kontrolle ob die buttons funktionieren
def answ2():
    answ=2
    nummer=nummer+1
    print answ
def answ3():
    answ=3
    nummer=nummer+1
    print answ
def answ4():
    answ=4
    nummer=nummer+1
    print answ

header = Frame(root)
header.pack()
headlab = Label(header,text="Megaquiz")
headlab.pack()

frage = Frame(root)
frage.pack()
fragtext = Text(frage,width=40,height=10)
fragtext.pack()

buttons = Frame(root)
buttons.pack()
butlab = Label(buttons,text="Antwort:")
butlab.pack()
but1 = Button(buttons,text="1",command=answ1)
but1.pack(side=LEFT)
but2 = Button(buttons,text="2",command=answ2)
but2.pack(side=LEFT)
but3 = Button(buttons,text="3",command=answ3)
but3.pack(side=LEFT)
but4 = Button(buttons,text="4",command=answ4)
but4.pack(side=LEFT)

while nummer == 1:
    frage1 = "Frage 1: Wieso??? 1,2,3 oder 4"
    fragtext.insert(1.0,frage1)
    root.mainloop()
    

while nummer == 2:
    frage2 = "Frage 2: Stimmt das??? 1,2,3 oder 4"
    fragtext.insert(1.0,frage2)
    root.mainloop()

root.mainloop()

so funktionierts jedenfalls nüscht :x

hat jemand ne Idee?
bin auch für neue ansätze dankbar

gruß,
thomas
Edit by Dooke: python-Tags statt code-Tags
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Naja, ich habe bis jetzt noch nie was mit Tk gemacht aber vielleicht ist es ja das was du willst:

Code: Alles auswählen

from Tkinter import *
root = Tk()
nummer = 1     #zeigt an welche frage läuft

def answ1():
    answ=1
    global nummer
    nummer=nummer+1
    print answ   #nur kontrolle ob die buttons funktionieren
    nextquest('Button 1, wenn richtig dann neue frage')

def answ2():
    answ=2
    global nummer
    nummer=nummer+1
    print answ
    nextquest('Button 2 blabla')

def answ3():
    answ=3
    global nummer
    nummer=nummer+1
    print answ
    nextquest('Button 3, blub')

def answ4():
    answ=4
    global nummer
    nummer=nummer+1
    print answ
    nextquest('Okay?')


header = Frame(root)
header.pack()
headlab = Label(header,text="Megaquiz")
headlab.pack()

frage = Frame(root)
frage.pack()
fragtext = Text(frage,width=40,height=10)
fragtext.pack()

buttons = Frame(root)
buttons.pack()
butlab = Label(buttons,text="Antwort:")
butlab.pack()
but1 = Button(buttons,text="1",command=answ1)
but1.pack(side=LEFT)
but2 = Button(buttons,text="2",command=answ2)
but2.pack(side=LEFT)
but3 = Button(buttons,text="3",command=answ3)
but3.pack(side=LEFT)
but4 = Button(buttons,text="4",command=answ4)
but4.pack(side=LEFT)

def nextquest(quest):
    fragtext.insert(1.0, quest)

while True:
    nextquest('Frage 1')
    root.mainloop()
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
knekke
User
Beiträge: 100
Registriert: Freitag 29. Oktober 2004, 17:23
Wohnort: Schweden

das hat sehr weitergeholfen, vielen dank.

hatte global in den defs nicht drin (das kommt davon wenn man in den tutorials und howtos nur das liest was man gerade braucht... da kommen ein paar elementare regeln schnell mal zu kurz :oops: )
und eine eigene def nextquest macht natürlich auch sinn

dankeschön
Antworten