Python - (PySimpleGUI) es posible recorrer llaves de un dict de esta forma

 
Vista:
sin imagen de perfil
Val: 233
Ha disminuido 1 puesto en Python (en relación al último mes)
Gráfica de Python

(PySimpleGUI) es posible recorrer llaves de un dict de esta forma

Publicado por smn (62 intervenciones) el 04/11/2020 01:24:52
Estoy aprendiendo a usar PySimpleGUI y estoy teniendo un problema en la linea donde estoy usando un for, se supone que deberia acceder a cada key(n(n)_salida) de la ventana y cambiar su valor por los de la lista nota_algebra, mas que nada lo que quiero hacer es simplificar un poco el codigo.

realmente nose si se podra hacer lo que yo estoy haciendo o si es un error de novato.

este es el error que se esta generando


1
2
3
4
Traceback (most recent call last):
  File "C:\Users\salva\PycharmProjects\pysimplegui\appEjemplo3.py", line 55, in <module>
    ventana[reemplazo].update(notas_algebra[n])
TypeError: list indices must be integers or slices, not float

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
import PySimpleGUI as sg
 
sg.theme("DarkAmber")
 
notas_poo = [6.6,None,None,None,None,None,None]
notas_diseño = [3.9,7,None,None,None,None,None]
notas_algebra = [4.9,0,0,0,0,0,0]
 
disenio = [
   [sg.Text("Nombre: "), sg.Input(key="nombre_entrada")],
   [sg.Text("Apellido: "), sg.Input(key="apellido_entrada")],
   [sg.Text("Asignatura: "), sg.Input(key="asignatura_entrada")],
   [sg.Button("Mostrar"), sg.Button("Salir")],
   [sg.Frame("Informacion",layout=[
        [sg.Text("Asignatura: "), sg.Text(size=(40,1),key="asignatura_salida")],
        [sg.Text("Notas: "),
            sg.Text("N1: ", key='n1_salida'),
            sg.Text("N2: ", key='n2_salida'),
            sg.Text("N3: ", key='n3_salida'),
            sg.Text("N4: ", key='n4_salida'),
            sg.Text("N5: ", key='n5_salida'),
            sg.Text("N6: ", key='n6_salida'),
            sg.Text("N7: ", key='n7_salida'),
         ]
 
    ])]
]
 
 
ventana = sg.Window("Ventana",disenio)
 
while True:
   event, value = ventana.read()
 
   if event == sg.WIN_CLOSED or event == "Salir":
      break
 
   if(event == "Mostrar"):
      if value["asignatura_entrada"] == "POO":
        ventana["asignatura_salida"].update(value["asignatura_entrada"])
        ventana["n1_salida"].update(notas_poo[0])
        ventana["n2_salida"].update(notas_poo[1])
        ventana["n3_salida"].update(notas_poo[2])
      elif value["asignatura_entrada"] == "Diseño de Software":
        ventana["asignatura_salida"].update(value["asignatura_entrada"])
        ventana["n1_salida"].update(notas_diseño[0])
        ventana["n2_salida"].update(notas_diseño[1])
        ventana["n3_salida"].update(notas_diseño[2])
      elif value["asignatura_entrada"] == "Algebra":
        ventana["asignatura_salida"].update(value["asignatura_entrada"])
        i = 1
        for n in notas_algebra:
            reemplazo = "n"+str(i)+"_salida"
            print(reemplazo)
            ventana[reemplazo].update(notas_algebra[n])
            i += 1
 
 
ventana.Close()
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
sin imagen de perfil
Val: 233
Ha disminuido 1 puesto en Python (en relación al último mes)
Gráfica de Python

(PySimpleGUI) es posible recorrer llaves de un dict de esta forma

Publicado por smn (62 intervenciones) el 04/11/2020 04:19:06
Ya lo solucione realmente es un error de novato


1
2
3
4
5
6
elif value["asignatura_entrada"] == "Algebra":
     ventana["asignatura_salida"].update(value["asignatura_entrada"])
      i = 1
      for n in notas_algebra:
          ventana["n"+str(i)+"_salida"].update(notas_algebra[i-1]) # simplemente tenia que poner esto en la lista [i-1]
          i += 1
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