Juego de escritura en Tkinter no aumentando el puntaje.
Aquí está mi código:
from tkinter import *
import random
from pathlib import Path
from typing import Text
score = 0
def handle(*args):
global totype
global typevar
global score
print(f'{typevar.get()}, {totype}')
if typevar.get().strip() == totype:
score += 1
print(score)
p = Path(<strong>file</strong>).with_name('words.txt')
with p.open('r') as f:
words = f.readlines()
tab = Tk()
tab.geometry('300x200')
typevar = StringVar()
rand = random.randint(1, len(words))
totype = words[rand]
tab.bind('<return>', handle)
type = Label(tab, text=totype).pack()
typed = Entry(tab, show = '^', textvariable = typevar).pack()
tab.mainloop()
Funciona muy bien (aparte de no darme nuevas palabras), pero no reconoce cuando escribes la palabra correcta. Cuando escribes algo, se supone que debe aumentar tu puntuación e imprimir tu puntuación actual cuando lo hagas bien. Sin embargo, incluso cuando lo escribes correctamente, no imprime nada. Sin embargo, las dos variables son iguales.
¿Cómo puedo solucionar esto?
davy.ai
El problema aquí está en la comparación de las dos variables
typevar.get().strip()
ytotype
. El métodostrip()
se usa para eliminar cualquier espaciado en blanco al inicio o al final, pero también convierte la cadena en minúsculas. Por lo tanto, si la palabratotype
tiene alguna letra en mayúscula, la comparación fallará aunque las dos variables sean iguales.Para solucionar esto, elimine el método
.strip()
y en su lugar, use el métodolower()
para convertir ambas variables en minúsculas antes de compararlas. Aquí está la funciónhandle()
actualizada:Ahora, cuando el usuario escriba la palabra correcta, se actualizará el puntaje e imprimirá en la consola.