Hilfe mit Geometriquiez

Fragen zu Tkinter.
Antworten
Frevla
User
Beiträge: 3
Registriert: Dienstag 23. Mai 2006, 13:30

Dienstag 23. Mai 2006, 14:06

hallo, ich wollte mal fragen ob ihr wisst wie man ein quiz macht mit python z.b. mit canvas
Zuletzt geändert von Frevla am Donnerstag 25. Mai 2006, 11:00, insgesamt 3-mal geändert.
Benutzeravatar
Mawilo
User
Beiträge: 446
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Dienstag 23. Mai 2006, 14:24

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
Frevla
User
Beiträge: 3
Registriert: Dienstag 23. Mai 2006, 13:30

Dienstag 23. Mai 2006, 14:33

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
oscar15
User
Beiträge: 67
Registriert: Freitag 3. März 2006, 15:43
Wohnort: Kölle

Dienstag 23. Mai 2006, 15:16

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!^^
Benutzeravatar
Mawilo
User
Beiträge: 446
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Dienstag 23. Mai 2006, 16:53

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()  
Frevla
User
Beiträge: 3
Registriert: Dienstag 23. Mai 2006, 13:30

Dienstag 23. Mai 2006, 17:08

Vielen Dank^^
Naja trotz alledem vielen dank du hast mir sehr geholfen!

Mfg Frevla!
Antworten