Seite 1 von 1

Hilfe mit Geometriquiez

Verfasst: Dienstag 23. Mai 2006, 14:06
von Frevla
hallo, ich wollte mal fragen ob ihr wisst wie man ein quiz macht mit python z.b. mit canvas

Verfasst: Dienstag 23. Mai 2006, 14:24
von Mawilo
Hallo,

mit der Suchfunktion findet man hier schon einiges zu dem Thema:

http://www.python-forum.de/topic-2420.html
http://www.python-forum.de/topic-4417.html

Stephan

Verfasst: Dienstag 23. Mai 2006, 14:33
von Frevla
Hi,
Ich habe die Such funktion bereits verwendet. Allerdings hilft mir das eine Thema insofern nichts da es GTK ist und das andere weicht sehr von meinem ab!
Es differenziert sich doch sehr von den anderen Themen. Trotzdem erst einmal Danke für die schnelle Antwort!

Mfg Frevla

Verfasst: Dienstag 23. Mai 2006, 15:16
von oscar15
Für die Punkte kannst du eine flag setzten!

d.h.

Code: Alles auswählen

def right_1():
    print 'richtig'
    flag += 1 # oder auch Punkt jenachdem wie du sie nennen willst!
Und am Ende einfach

Code: Alles auswählen

print "Sie haben %i Punkte" % (flag)
Oder anderes - halt wie du es haben willst!

Zum weitersprinegen kannst du du das Fenster einfach in eine def frage1(): schrieben und die nächste in eine andere, dass musst du dann in eine schleife einbaun!^^

Ich hoffe das war gemeint

Grüße

Flo

Endlich konnt ihc mal einem helfen!^^

Verfasst: Dienstag 23. Mai 2006, 16:53
von Mawilo
Mal nur so als Beispiel:

Code: Alles auswählen

# -*- coding: iso-8859-1 -*-

import Tkinter as tk

class Quiz:
##    Die Fragen sind als Dictionary zu definieren 
##    im Format {Frage:[Antwort,Bild]}
    fragen = {"Bei einem Tetraeder sind alle Seiten gleich lang und alle \
Flächen gleich groß":[True,1],
          "Habe ich die Suchfunktion verwendet?":[False,2],
          "Habe ich mir selbst Gedanken gemacht?":[True,3],
          "Ist es richtig, Hausaufgaben durch andere erledigen zu \
lassen?":[False,4],
          }
    def __init__(self):
        self.root = tk.Tk()
        self.root.title('Geometriequiz')
        self.maxX = 480
        self.maxY = 320
        self.richtig = 0
        self.falsch = 0
        self.alteFrage = ''
        # Canvas
        self.fr01 = tk.LabelFrame(self.root, text = 'Canvas-Zeichnung')
        self.fr01.pack(fill=tk.X)
        self.canvas= tk.Canvas(self.fr01,width=self.maxX, 
                                        height=self.maxY, bg='white')
        self.canvas.pack()
        # Fragelabel
        self.fragenliste = self.fragen.keys()
        self.anzahlfragen = len(self.fragenliste)
        self.gewaeltefrage = 0
        self.frage = tk.StringVar()
        self.frage.set(self.fragenliste[0])
        self.frame2 = tk.LabelFrame(self.root,text='Frage')
        self.frame2.pack(fill=tk.X)
        self.lab_1=tk.Label(self.frame2,textvariable = self.frage) 
        self.lab_1.pack()
        #Buttonleiste
        self.frame3 = tk.LabelFrame(self.root,text='Antwortbutton')
        self.frame3.pack(fill=tk.X)
        self.but_R=tk.Button(self.frame3,
                                text='Richtig', 
                                command = lambda:self.pruefAntwort(True)) 
        self.but_R.pack(side=tk.LEFT) 
        self.but_L=tk.Button(self.frame3,
                                text='Falsch', 
                                command = lambda:self.pruefAntwort(False)) 
        self.but_L.pack(side=tk.RIGHT)
        self.anzeigeBild(self.fragen[self.frage.get()][1])
        self.root.mainloop()
        
    def pruefAntwort(self,button):
        try:
            if button == self.fragen[self.frage.get()][0]:
                self.richtig += 1
                self.naechsteFrage()
            else:
                self.falsch += 1
                self.naechsteFrage()
        except KeyError:
            pass
        
    def naechsteFrage(self):
        self.gewaeltefrage += 1
        if self.anzahlfragen > self.gewaeltefrage:
            self.frage.set(self.fragenliste[self.gewaeltefrage])
            self.anzeigeBild(self.fragen[self.frage.get()][1])
        else:
            self.frage.set('')
            self.anzeigeLoeschen()
            self.frage.set('richtige Antworten: %s, falsche Antworten %s'%\
                            (self.richtig,self.falsch))
            
    def anzeigeBild(self,nummer):
        self.anzeigeLoeschen()
        if nummer == 1:
            self.bild1()
        elif nummer == 2:
            self.bild2()
        elif nummer == 3:
            self.bild3()
        elif nummer == 4:
            self.bild4()
            
    def anzeigeLoeschen(self):
        self.canvas.destroy()
        self.canvas= tk.Canvas(self.fr01,width=self.maxX, 
                                        height=self.maxY, 
                                        bg='white')
        self.canvas.pack()
            
    def bild1(self):
        self.canvas.create_line(40,280,360,280) 
        self.canvas.create_line(40,280,200,120) 
        self.canvas.create_line(200,120,360,280) 
        self.canvas.create_line(360,280,200,240) 
        self.canvas.create_line(40,280,200,240) 
        self.canvas.create_line(200,120,200,240)
        
    def bild2(self):
        self.canvas.create_line(40,280,360,280)
        
    def bild3(self):
        self.canvas.create_line(360,280,200,240)
        
    def bild4(self):
        self.canvas.create_line(200,120,200,240)
        
if __name__ == '__main__': 
    Quiz()  

Verfasst: Dienstag 23. Mai 2006, 17:08
von Frevla
Vielen Dank^^
Naja trotz alledem vielen dank du hast mir sehr geholfen!

Mfg Frevla!