Python - Dado randomizado Problema con GUI tkinter Python,

 
Vista:
sin imagen de perfil

Dado randomizado Problema con GUI tkinter Python,

Publicado por Tomás (2 intervenciones) el 31/07/2021 14:35:33
Soy bastante novato en el mundo de la programacion, de a poco estoy intentando aprender y es por eso que estoy recurriendo a este foro, estoy intentando crear un dado randomizado con python ocupando la librería de tkinter y random, y al intentar ejecutarlo no funciona como esperaría que lo hiciera, supongo abrán errores en la lógica, pero no logro identificarlos, comentarios orientandome serían de mucha ayuda, también quiero agregar que abajo intenté asignarle algunos metodos pero tampoco pude, gracias de antemano.

from tkinter import *
from random import *

root = Tk()
root.configure(bg='#333333')
root.title('Dado Random')
root.geometry('200x200')

from tkinter import *
from random import *

root = Tk()
root.configure(bg='#333333')
root.title('Dado Random')
root.geometry('200x200')

def NumeroRandomF():
DentroN = int(Dentro.get())
if DentroN == 1 or DentroN == 2 or DentroN == 3 or DentroN == 4 or DentroN == 5 or DentroN == 6:
try:
Randomizador = int(random.randint(1,6))
if Randomizador == DentroN:
Respuesta.set('Felicitaciones, el numero {} coincide con el del dado').format
Dentro.set('')
else:
Respuesta.set('No son iguales los valores')
Dentro.set('')
except:
Respuesta.set('Error')
Dentro.set('')
else:
Respuesta.set('Valor Invalido')
Dentro.set('')

Etiqueta1 = Label(text='Elige un número del 1 al 6').grid(row=0, column=0)
Dentro = StringVar()
Numero = Entry(root, textvariable=Dentro).grid(row=1, column=0)
Etiqueta2 = Label(text='El resultado es .. ').grid(row=2, column=0)
Respuesta = StringVar()
Etiqueta3 = Label(root, textvariable=Respuesta).grid(row=3, column=0)
Boton = Button(root, text='Lets go', command=NumeroRandomF).grid(row=4, column=2)
# Numero.focus()
# root.bind('<Return>', NumeroRandom)
root.mainloop()
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Francisco Javier
Val: 249
Ha aumentado su posición en 29 puestos en Python (en relación al último mes)
Gráfica de Python

Dado randomizado Problema con GUI tkinter Python,

Publicado por Francisco Javier (313 intervenciones) el 31/07/2021 18:59:17
Hola buenas, lo primero es que tienes abiertas la ventana root dos veces, luego en algún label no incicas la raíz, root en este caso, a la hora de igalar condiconales
1
if DentroN == 1 or DentroN == 2 or DentroN == 3 or DentroN == 4 or DentroN == 5 or DentroN == 6:
puedes hacerlo así:
1
if DentroN in [1,2,3,4,5,6]:
o
1
if DentroN in range(1,6):
En fin hay varias cosillas mas o menos podrías ponerlo así para que tenga funcionalidad pero te animo a seguir para cada vez hacer menos codigo.
Por cierto a la hora de importa random y utilizan randint debes de :
import random (simplemente)
Un saludo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
from tkinter import *
import random
 
root = Tk()
root.configure(bg='#333333')
root.title('Dado Random')
root.geometry('200x200')
 
def NumeroRandomF():
  DentroN = int(Dentro.get())
  if DentroN in range(1,6):
    try:
      Randomizador = random.randint(1,6)
      print(Randomizador)
      if Randomizador == DentroN:
          Respuesta.set('Felicitaciones, el numero {} coincide con el del dado'.format(DentroN))
          Dentro.set('')
      else:
          Respuesta.set('No son iguales los valores')
          Dentro.set('')
    except:
      Respuesta.set('Error')
      Dentro.set('')
  else:
    Respuesta.set('Valor Invalido')
    Dentro.set('')
 
 
Dentro = StringVar()
Respuesta = StringVar()
Etiqueta1 = Label(root,text='Elige un número del 1 al 6').grid(row=0, column=0)
Numero = Entry(root, textvariable=Dentro).grid(row=1, column=0)
Etiqueta2 = Label(root,text='El resultado es .. ').grid(row=2, column=0)
Etiqueta3 = Entry(root, textvariable=Respuesta).grid(row=3, column=0)
Boton = Button(root, text='Lets go', command=NumeroRandomF).grid(row=4, column=2)
root.mainloop()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Dado randomizado Problema con GUI tkinter Python,

Publicado por Tomás (2 intervenciones) el 01/08/2021 12:55:40
Hola!, Me sirvió bastante tu comentario, me propuse como reto hacerlo desde 0 con los conocimientos que adquerí, logré que funcionara como quería e incluso agregué mas funcionalidades!, acá el codigo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
from tkinter import *
import random
 
root = Tk()
root.geometry('182x110')
root.title('Dado Random')
 
#Logica
 
def Suerte(*args):
    try:
        ValorRecibidoNum = int(Eleccion.get())
        ValorRandom = random.randrange(1,6)
        print ('Valor dado es', ValorRandom)
        print ('El valor del usuario es', ValorRecibidoNum)
        if ValorRandom == ValorRecibidoNum:
            Eleccion.set('')
            ValorDado.set('El valor del dado es ' + str(ValorRandom))
            ValorTotal.set('Los numeros coinciden')
 
        else:
            Eleccion.set('')
            ValorDado.set('El valor del dado es ' + str(ValorRandom))
            ValorTotal.set('Los numeros no coinciden')
 
    except:
        Eleccion.set('')
        ValorDado.set('Error')
        ValorTotal.set('')
 
#IDE
frame = Frame(root, pady=3, padx=12).grid(row=0, column=0)
 
Eleccion = StringVar()
ValorDado = StringVar()
ValorTotal = StringVar()
Etiqueta1 = Label(frame, text='Elige un valor del 1 al 6')
Etiqueta1.grid(row=1, column=0)
ValorRecibido = Entry(frame, width=7, textvariable=Eleccion)
ValorRecibido.grid(row=2, column=0)
Etiqueta2 = Label(frame, textvariable=ValorDado)
Etiqueta2.grid(row=3, column=0)
Etiqueta3 = Label(frame, textvariable=ValorTotal)
Etiqueta3.grid(row=4, column=0)
Btn = Button(frame, text='Start', command=Suerte)
Btn.grid(row=5, column=2)
 
ValorRecibido.focus()
root.bind('<Return>', Suerte)
root.mainloop()

También descubrí que si se pone el .grid a la derecha del entry o algún metodo en general (estoy asumiendo lo del metodo), retorna como None, por lo que no se podría llamar al metodo
1
ValorRecibido.focus()
hago este comentario por si alguien más pasó por mi mismo problema, por otra parte, todo funciona como quería que lo hiciera, muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar