Seite 1 von 1

Class mit der Tastaturabfrage verwenden?

Verfasst: Donnerstag 14. Januar 2021, 19:46
von KlausP
ich hatte mal ein Beispiel gepostet, wo ich mehrere Werte an eine Tastaturabfrage übergebe.

Da meinte _blackjack_ , das wäre mit Classes besser gelöst.
Nun habe ich mich mit Classes ein wenig befasst und stehe dennoch auf dem Schlauch und sehe nicht, wie ich die Stuktur verbessern könnte.

Ich poste mal die Funktion, welche die Tastenabfrage aufruft und frag mich, wie ich die Parameter per Class übergeben könnte.
Wenn ich die Werte, welche ich per Taster übergebe, rufe ich die Variablen per xyz.get() auf.

Wenn ich hingegen eine Klasse verwenden würde, müsste ich doch auch def get xyz(self) festlegen.
So richtig sehe ich den Ansatz noch nicht.
Wenn ich also im gegebenen Beispiel per Tastenfunktion einen Eingabewert, einen Ausgabewert (wenn erfolgreich abgespeichert ">>> Pipapo wurde gespeichert") und einen letzten Wert (um zu sehen, ob der Wert nicht schon erfasst war) übergebe, sehe ich noch nicht den richtigen Ansatz um eine Klasse zu verwenden.

Ich hoffe, meine Fragestellung ist klar genug und nicht zu doof.
Danke vorab für eure Unterstützung!
Gruß, Klaus

Code: Alles auswählen

def tast_neu_wort (eg_neu_wort, ag_neu_wort, letztes_wort, feld_ag_neu_wort):
        
        hole_neues_wort = eg_neu_wort.get()
        letzt_wort = letztes_wort.get()
        n_wort = str(hole_neues_wort)
        # print(letzt_wort, " - ", n_wort) 

        
        if  (n_wort == letzt_wort):
              text= " " + n_wort + " schon erfasst"; nw_farb="orange"
            
        elif (len(n_wort) < 3):
              text= " " + n_wort + " ist zu kurz"; nw_farb="orange"    
    
        else:    
              up_text = ">>> " + n_wort; nw_farb="lightblue"
              text = up_text.upper()
              letztes_wort.set(n_wort)

              nfile = 'woerter_neu.txt'
              if size > 2000000:
                    pfad = ""
              else:
                    pfad = "E:\\"

              npathfile = pfad + nfile
              # print(npathfile)
                       
        with open(npathfile, "a", encoding = "utf-8") as woerter:
                   woerter.write (n_wort)
                   woerter.write ("\n")

        eg_neu_wort.set("")
        
                
        ag_neu_wort.set(text)
        feld_ag_neu_wort.config(bg=nw_farb)
               

        entry = feld_eg_must
        entry.focus_set()

Re: Class mit der Tastaturabfrage verwenden?

Verfasst: Donnerstag 14. Januar 2021, 20:42
von Sirius3
Eingerückt wird immer mit 4 Leerzeichen pro Ebene, nicht mal 8, mal 6 und mal 11.
Du hast ja immer noch kryptische Abkürzungen, wie ein neues Wort im Erdgeschoss.
`hole_neues_wort` ist wie eine Tätigkeit benannt, also so, wie man typischerweise Funktionen benennt, das ist aber eine Variable, genauergesagt ein String, den Du nochmal in einen String umwandelst (warum nur?) und in n_wort speicherst, wobei das n wieder so nichtssagend ist.
Bei den if-Bedingungen sind zu viele Klammern. Strings stückelt man nicht mit + zusammen, sondern bentzt Stringformatierung. Jede Anweisung kommt in eine neue Zeile. ; benutzt man nicht.
`size` ist nicht definiert, die if-Abfrage auch mehr als komisch, da braucht es eine Erklärung.
Pfade setzt man nicht mit + zusammen, da benutzt man pathlib.Path dafür.
`feld_eg_must` ist nirgends definiert, da benutzt Du also immer noch globale Variablen. Und genau darum benutzt man bei GUIs Klassen, um nicht jeder Funktion etliche Parameter übergeben zu müssen.