GUI in Programm integrieren

Fragen zu Tkinter.
Benutzeravatar
klaus
User
Beiträge: 88
Registriert: Samstag 23. Juni 2007, 09:33
Wohnort: Kaufbeuren
Kontaktdaten:

Hi Leute, ich hab mal wieder ein Problem, und zwar, warum die Funktion collect in der Klasse Lib nicht die beiden Funktionsaufrufe durchführt, die in den letzten Zeile stehen. Ich habs auch schon mit Kleinschreibung probiert, aber es geht nicht.
Hier mal der Code:

Code: Alles auswählen

##importe
class Iface:
    question, solve, stat = "default", "default", "default"
    points, counter, loop, switch = 0, 0, 0, 2
    modus, m, dur = "abf", "", 0
    index = [["Latein Vokabeltrainer", "", 0]]
    def __init__(self, master):
## Erzeugung des Hauptfensters

    def turn(self):
        print "turn"
        if self.modus == "lrn":
            for vokabel in range(0, len(self.index)):
                if vokabel[2] > 3:
                    self.index.pop(vokabel)
                    reduced += 1
    	if self.modus in ["abf", "lrn"]:
            self.dur = len(self.index)
            print self.dur
        self.loop = 0
    
    def correct(self, event):
## ...

    def next(self, access = -1):
        if self.switch != 0:
            pass
        else:
            print "next"
            if self.loop < self.dur:
                if self.modus == "wdh":
                    access = randrange(0, len(self.index))
                else:
                    access = self.loop
            elif self.modus in ["abf", "wdh"]:
                self.evaluate(self.points, self.counter)
            else:
                self.turn
            if access > -1:
                self.question, self.solve, self.stat = self.index[access]
                self.label.config(text=self.question)
                self.entry.delete(0, tk.END)
                self.button.config(text="-------")
                self.switch = 1
                self.loop += 1

    def evaluate(self, err, von):
## ...

class Lib:
    voklist = []
    topic, t = "rom", ""
    von, bis = 0, 0
    def __init__(self):
## Erzeugung des Auswahlfensters

    def collect(self):
        topic, start, ende = self.topic, self.von, self.bis
## Erzeugung von self.voklist
        Iface.index = self.voklist
        Iface.switch = 0
        iface.button.config(text="Start")
        Iface.next
        Iface.turn
	
root = tk.Tk()
iface = Iface(root)
library = Lib()
root.mainloop()
Wäre nett, wenn mir jemand helfen könnte.

@poker: auch in dieser Dokumentation steht nicht explizit drin, dass man den Variablennamen erst erzeugen muss.
http://klausweidinger.kl.funpic.de
schlangenbeschwörer
User
Beiträge: 419
Registriert: Sonntag 3. September 2006, 15:11
Wohnort: in den weiten von NRW
Kontaktdaten:

Das ist das Gegenteil von dem hier
:arrow: Da du die Methoden nicht verarbeiten sondern aufrufen willst, muss du das schon sagen, und zwar dadurch, das du da zwei klammern hinterpappst, wie du es in allen anderen Fällen auch getan hast :!:
Benutzeravatar
klaus
User
Beiträge: 88
Registriert: Samstag 23. Juni 2007, 09:33
Wohnort: Kaufbeuren
Kontaktdaten:

Danke.

Ich habe mal wieder ein Problem: Die reset-Funktion macht noch nicht das was sie soll. Wenn man "n" eingibt, soll sich die Anwendung schließen, bei "j" soll die gleiche Abfrage nochmal wiederholt werden, und bei "a" soll das Auswahlmenü nochmal aufgehen, die anderen Variablen aber auf die Ursprungswerte zurückgesetzt werden.

Außerdem habe ich ein Problem mit der Codierung (bei Umlauten). Pyscripter bringt immer folgende Warnung.

Code: Alles auswählen

C:\Py4Kids\mylib\iface3.py:47: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
  if answer in self.solve.split(", "):
Weil der Code mitlerweile etwas länger ist (200 Zeilen), hab ich ihn ausgelagert: http://paste.pocoo.org/show/8411/
http://klausweidinger.kl.funpic.de
Antworten