Python - El llamado de un metodo dentro de otro no me esta funcionando.Ayuda!

 
Vista:
sin imagen de perfil

El llamado de un metodo dentro de otro no me esta funcionando.Ayuda!

Publicado por Yuvania (4 intervenciones) el 23/05/2018 14:36:03
Estoy haciendo una trivia, lo ultimo que me falta es que cuando precione el boton revisar, el estadoIncial(), el cargarPregunta(), y el cargarRespuesta() sirvan, puesto que cuando llama a verifica() la funcion de verificar la hace bien, pero no llama a los otros metodos que contiene dentro



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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
import os
from tkinter import *
from winsound import *
import random
import winsound
 
ventana = Tk()#Clase,heredara todas funciones de Tkinter
#winsound.Beep(300,1000)
#def sonidoIntento2():
  # os.system("C:\Users\Yuvania Castillo\Documents\Python_Ejercicios\Tiburon tema de sonido.wav")
ventana.resizable(0,False)#False,True#0,0#Para redimensionar la ventana, se puede con 0,0 o true o false
ventana.title("Trivia")#Nombre a la ventana
ventana.iconbitmap("Question_Block_24685.ico")#icono a la ventana
ventana.geometry("800x500")#ancho#alto
ventana.config(bg="gold")#backgroud, color de la ventana
ventana.config(relief="ridge")
ventana.config(bd=15)
ventana.config(cursor="hand2")
 
 
##CREO EL FRAME
miFrame=Frame()
miFrame.pack()#empaquetar, o sea unir el frame a la raiz(meterlo xD)
#side="right""Let""bootom""top" #anchor=puntos cardinales "n"
#fill= x,y,both,none expand=true,0 o 1
miFrame.config(width="600" , height= "500")
miFrame.config(bg="navy blue")
#miFrame.config(bd=15)
#miFrame.config(relief="groove")
miFrame.config(cursor="hand2")
 
##Crear los labes
titulo=Label(miFrame, text="Trivia Race",bg="navy blue",fg="white",font=("Fixedsys",35))
titulo.place(x=130,y=10)
respuestas=Label(miFrame,text="Respuesta definitiva",bg="navy blue",fg="white",font=("MS Sans Serif",16))
respuestas.place(x=225,y=300)
opciones=Label(miFrame,text="Opciones",bg="navy blue",fg="white",font=("MS Sans Serif",16))
opciones.place(x=265,y=160)
 
#CUADRO DE TEXTO
cuadroPregunta=Entry(miFrame,justify='center')
cuadroPregunta.place(x=50,y=100, width=520)
 
cuadroRespuesta=Entry(miFrame,justify='center')
cuadroRespuesta.place(x=265,y=340,width=100)
 
cuadroOpcion1=Entry(miFrame,justify='center')
cuadroOpcion1.place(x=190,y=190,width=250)
 
cuadroOpcion2=Entry(miFrame,justify='center')
cuadroOpcion2.place(x=190,y=220,width=250)
 
cuadroOpcion3=Entry(miFrame,justify='center')#justify='center', para que el texto ingrese en el centro
cuadroOpcion3.place(x=190,y=250,width=250)
 
#METODOS DE LA TRIVIA
listaPreguntas = ["¿Cuál es el país menos turístico de Europa?","¿En cuál de los siguientes países NO hay ningún desierto?"," ¿Cuál de estos países africanos no tiene costa?"]
 
listaRespuestaCorrectas = ["Liechtenstein", "Alemania","Todas tienen costa" ]
 
listaRespuestasIncorrectas1=["Moldavia","España","Mauritania"]
 
listaRespuestasIncorrectas2=["Armenia","Mongolia","Senegal"]
 
 
posicionPregunta=random.randint(0,2)#La salida va a ser: 0, 1, 2 e incluye al 2
 
def obtenerRespuesta(respuesta):
    if cuadroRespuesta.get()=="a":
        return cuadroOpcion1.get()
    elif cuadroRespuesta.get()=="b":
    	return cuadroOpcion2.get()
    elif cuadroRespuesta.get()=="c":
    	return cuadroOpcion3.get()
 
def obtenerPregunta():
	return cuadroPregunta.get()
 
def cargaPregunta():
	 cuadroPregunta.insert(0,listaPreguntas[posicionPregunta])
 
def cargarRespuesta():
	numeroEntry=random.randint(0,2)#La salida va a ser: 0, 1, 2 e incluye al 2
 
      #el numeroEntry nos sirve para que la respuesta correcta no se envie siempre en el mismo entry
	if numeroEntry==0:#Si el numero es 0, en el primer entry se pondra la respuesta correcta
	   cuadroOpcion1.insert(0,listaRespuestaCorrectas[posicionPregunta])
	   cuadroOpcion2.insert(0,listaRespuestasIncorrectas1[posicionPregunta])
	   cuadroOpcion3.insert(0,listaRespuestasIncorrectas2[posicionPregunta])
 
       elif numeroEntry==1:#Si el numero es 1, en el segundo entry se pondra la respuesta correcta
	   cuadroOpcion2.insert(0,listaRespuestaCorrectas[posicionPregunta])
	   cuadroOpcion1.insert(0,listaRespuestasIncorrectas1[posicionPregunta])
	   cuadroOpcion3.insert(0,listaRespuestasIncorrectas2[posicionPregunta])
 
      elif numeroEntry==2:#Si el numero es 2, en el tercer entry se pondra la respuesta correcta
	   cuadroOpcion3.insert(0,listaRespuestaCorrectas[posicionPregunta])
	   cuadroOpcion1.insert(0,listaRespuestasIncorrectas1[posicionPregunta])
	   cuadroOpcion2.insert(0,listaRespuestasIncorrectas2[posicionPregunta])
 
def estadoInicial():
 
	cuadroOpcion1.delete(0, 'end') # Esto borra el texto del Entry
	cuadroOpcion2.delete(0, 'end') # Esto borra el texto del Entry
	cuadroOpcion3.delete(0, 'end') # Esto borra el texto del Entry
	cuadroPregunta.delete(0, 'end') # Esto borra el texto del Entry
 
def verificar(obtenerPregunta, obtenerRespuesta):
 
	msj='Metodo verificar \n'
	posicionPregunta=random.randint(0,2)#La salida va a ser: 0, 1, 2 e incluye al 2
	if obtenerPregunta in listaPreguntas and obtenerRespuesta in listaRespuestaCorrectas:
	    msj+=' \nFunciono'
	    print("Respuesta Correcta")
	    estadoInicial()
	    cargaPregunta()
	    cargarRespuesta()
 
	else:
	    msj+=' \nNO Funciono'
	    print("Respuesta Incorrecta")
	    estadoInicial()
	    cargarRespuesta()
	    cargarRespuesta()
 
	return msj
 
 
 
def sonido():
	if(ventana.mainloop()):
	   PlaySound("Tiburon tema de sonido",winsound.SND_FILENAME)
 
 
 
cargaPregunta()
cargarRespuesta()
 
#pongo los campos de texto en estado de lectura, despues de haberlos llenado o sino no funcionan y no muestran nada
cuadroOpcion1.config(state="readonly")
cuadroOpcion3.config(state="readonly")
cuadroOpcion2.config(state="readonly")
cuadroPregunta.config(state="readonly")
#Boton ingresar                             #En python cuando pongo en command, un metodo que lleva parenteris,lo que hace es realizar ese metodo automaticamente,y lo guarda en command
boton=Button(miFrame, text="Revisar",width=3,command=lambda:verificar(obtenerPregunta(),obtenerRespuesta(cuadroRespuesta.get())))#asi que para resolver ese defecto, se le agrega lambda
boton.place(x=250,y=410,width=130)
#print(obtenerPregunta())
#rint(obtenerRespuesta(cuadroRespuesta.get()))
 
sonido()
 
ventana.mainloop()#bucle infinito,porque una ventana
#debe mantenerse en ejecucion,para inicializar la ventana
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