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

Eingabe und Darstellung einer Zahl

Beitragvon Ydope » 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: 2405
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Re: Eingabe und Darstellung einer Zahl

Beitragvon DasIch » 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

Beitragvon Ydope » 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: 2405
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Beitragvon DasIch » 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.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder