Eingabe und Darstellung einer Zahl

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
Ydope
User
Beiträge: 19
Registriert: Freitag 12. Dezember 2008, 17:22

Freitag 19. Dezember 2008, 21:11

Hallo,

Simples Ziel dieses Codes ist es, dass der User eine Zahl eingibt und dass diese während der Eingabe angezeigt wird. Ferner soll Backspace dabei normal nutzbar sein. Es soll beim Verlassen der Schleife (mittels Eingabe-Taste) in der Variable fsize eine Zahl zwischen 1 und 9999 stehen. Es wird pygame dafür genutzt.
Irgendwie sieht mir das viel zu umständlich aus, daher wollte ich fragen ob das auch viel einfacher machbar ist. Grund für Komplikationen ist u.a., dass fsize den Wert '' (= leerer String) hat, wenn man die ganze Eingabe "gebackspacet" hat. Und dass man das nicht einfach per int(fsize) zu 0 machen kann.

Code: Alles auswählen

while event.key != K_RETURN or fsize == 0:
    for event in pygame.event.get():
        if event.type == KEYDOWN:
            if event.key in (K_1,K_2,K_3,K_4,K_5,K_6,K_7,K_8,K_9,K_0):
                a = pygame.key.name(event.key)
                fsize = min(9999,fsize*10+int(a))
            elif event.key == K_BACKSPACE:
                if fsize > 0: 
                    fsize = str(fsize)[:-1]
                    if fsize: fsize = int(fsize)
                    else: fsize = 0
        draw_txt(str(fsize)) #Funktion, die sich um die Bildschirmausgabe kümmert
Dank und Gruß
DasIch
User
Beiträge: 2452
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Freitag 19. Dezember 2008, 21:16

Ydope hat geschrieben:Grund für Komplikationen ist u.a., dass fsize den Wert '' (= leerer String) hat, wenn man die ganze Eingabe "gebackspacet" hat. Und dass man das nicht einfach per int(fsize) zu 0 machen kann.

Code: Alles auswählen

fsize = int(fsize) if fsize else 0
Wieso schneidest du eigentlich in der Zeile davor die Zahl überhaupt um eine Ziffer ab?
Ydope
User
Beiträge: 19
Registriert: Freitag 12. Dezember 2008, 17:22

Freitag 19. Dezember 2008, 21:21

Danke.
Zu deiner Frage: Wenn man Backspace drückt, soll doch das letzte Zeichen entfernt werden.

PS: Oder meinst du man sollte einfach die ganze Eingabe wieder löschen? Das wäre wohl in der Tat einfacher, vorallem, da es nur kurze Zahlen sind.
DasIch
User
Beiträge: 2452
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Freitag 19. Dezember 2008, 21:26

Ydope hat geschrieben:Zu deiner Frage: Wenn man Backspace drückt, soll doch das letzte Zeichen entfernt werden.
Ups, dass hab ich wohl übersehen.
Antworten