es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¡Ayuda con Python! El código funciona, solo necesita unos ajustes. Generar un número aleatorio entre 0 y 99, que cambie cada 2 segundos.

Por primera vez estoy codificando. Encontré parte de un código de RNG en línea. Estoy tratando de hacer que cambie a un nuevo número aleatorio cada 2 segundos sin que tenga que hacer clic en él. Sé que probablemente tiene algo que ver con “while” o “after”. Pero simplemente no puedo entenderlo. ¡Cualquier ayuda sería genial! Aquí está el código que tengo hasta ahora:

from tkinter import Tk, Label, StringVar
import random 

root = Tk()
root.title('RNG')
root.configure(background='black')
tout = StringVar()
label = Label(root, textvariable=tout, font=('TkDefaultFont', 99), bg='black')
label.pack()

def _quit():
    root.quit()
    root.destroy()

def gen_rand():
    randvar = random.randint(0,99)
    tout.set(randvar)
    if randvar < 25:
       label.config(fg='red')
    elif randvar < 50:
       label.config(fg='orange')
    elif randvar < 75:
       label.config(fg='yellow')
    else:
        label.config(fg='green')

gen_rand()
root.mainloop()
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para cambiar el número aleatorio cada 2 segundos sin hacer clic, puedes agregar un bucle while y la función time.sleep(). Aquí tienes un ejemplo:

    import tkinter as tk
    import random
    import time
    
    root = tk.Tk()
    root.title('RNG')
    root.configure(background='black')
    
    tout = tk.StringVar()
    label = tk.Label(root, textvariable=tout, font=('TkDefaultFont', 99), bg='black')
    label.pack()
    
    def _quit():
        root.quit()
        root.destroy()
    
    def gen_rand():
        randvar = random.randint(0,99)
        tout.set(randvar)
        if randvar < 25:
            label.config(fg='red')
        elif randvar < 50:
            label.config(fg='orange')
        elif randvar < 75:
            label.config(fg='yellow')
        else:
            label.config(fg='green')
    
    while True:
        gen_rand()
        time.sleep(2)
    
    root.mainloop()
    

    El bucle while llama continuamente a la función gen_rand() cada 2 segundos (utilizando la función time.sleep()), actualizando el número aleatorio mostrado en la etiqueta cada vez. El bucle continuará hasta que el programa sea cerrado manualmente.

Comments are closed.