Python - Variable en tkinter

 
Vista:
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

Variable en tkinter

Publicado por Francisco Javier (313 intervenciones) el 12/02/2021 20:23:08
Buenas noches mi pregunta igual es muy simple pero ahí va:
Tengo una función que me da un resultado por ejemplo termina en

return resultado

Y en tkinter tengo un botón que al pulsar lanza la función y quiero que el resultado me lo imprima en ul Mabel que tengo en tkinter pero no sé cómo decirle que el resultado de la función lo imprima en el La el del tkinter. Podéis ayudarme.?
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: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Variable en tkinter

Publicado por tincopasan (1082 intervenciones) el 12/02/2021 20:26:02
es simple, pero poné el código de lo que estás mencionando.
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
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

Variable en tkinter

Publicado por Francisco Javier (313 intervenciones) el 12/02/2021 20:59:12
Quisiera poner el resultado de la funcion que termina en la linea114 de la función start2() y que ese resultado aparezca en el Label con nombre resultado_texto de la linea160

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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
import random
from colorama import init, Fore, Back, Style
import sys
from tkinter import *
import tkinter
 
class Reflector():
 
    def __init__(self):
 
        self.reflector=["ABCDEFGHIJKLMNÑOPQRSTUVWXYZ "," ZYXWVUTSRQPOÑNMLKJIHGFEDCBA"]
 
    def refleja(self,indice):
        letra=self.reflector[0][indice]
        indice_reflejo=self.reflector[1].index(letra)
        return indice_reflejo
 
class Rotor():
 
    def __init__(self):
        self.abecedario=["ABCDEFGHIJKLMNÑOPQRSTUVWXYZ "]
        self._pos_ini = None
        self.rotor1=[" UBGRXAIQTVYLDÑMHCKWNOJFZEPS","QTVYLDPSUBGRXAIÑMHCKWNOJFZE "]
        self.rotor2=[' ÑPODWMELKGIUXCAYTZBNVJSHQRF','CYPTRSÑHBJOLWXKDVMQZIAGUFEN ']
        self.rotor3=[' VGMDLFBSTCÑXKPWZHOEJNARYIQU','IGNRVUFMYPXSWÑETCZBDALKQJHO ']
 
    def crea_rotor (self,nombre):
        tamano=28
        abecedario="ABCDEFGHIJKLMNÑOPQRSTUVWXYZ"
        desordena=random.sample(abecedario,tamano)
        primero=''.join(desordena)
        desordena=random.sample(abecedario,tamano)
        segundo=''.join(desordena)
        nombre=[primero,segundo]
        return nombre
 
    def conexion (self,indi,rotor):
        letra=rotor[0][indi]
        conector=rotor[1].index(letra)
        return conector
 
    def conexion_decodifica(self,indice,rotor):
        letra=rotor[1][indice]
        conector=rotor[0].index(letra)
        return conector
 
 
    @property
    def pos_ini(self):
        return self._pos_ini
 
    @pos_ini.setter
    def pos_ini(self, value):
        self._pos_ini = self.conexion[0].index(value)
 
class Enigma():
 
    def __init__(self):
        self.abecedario="ABCDEFGHIJKLMNÑOPQRSTUVWXYZ "
        self.rotor1=[" UBGRXAIQTVYLDÑMHCKWNOJFZEPS","QTVYLDPSUBGRXAIÑMHCKWNOJFZE "]
        self.rotor2=[' ÑPODWMELKGIUXCAYTZBNVJSHQRF','CYPTRSÑHBJOLWXKDVMQZIAGUFEN ']
        self.rotor3=[' VGMDLFBSTCÑXKPWZHOEJNARYIQU','IGNRVUFMYPXSWÑETCZBDALKQJHO ']
 
    def posicion_inicial(self,rotora,rotorb,rotorc,a,b,c):
        global rotor1
        global rotor2
        global rotor3
        x=rotora[0].index(a)
        self.rotor1=[rotora[0][x:]+rotora[0][:x],rotora[1][x:]+rotora[1][:x]]
        y=rotorb[0].index(b)
        self.rotor2=[rotorb[0][y:]+rotorb[0][:y],rotorb[1][y:]+rotorb[1][:y]]
        z=rotorc[0].index(c)
        self.rotor3=[rotorc[0][z:]+rotorc[0][:z],rotorc[1][z:]+rotorc[1][:z]]
        return self.rotor1,self.rotor2,self.rotor3
 
e=Enigma()
rf=Reflector()
r=Rotor()
posini=[]
def start():
    cambio_rotores=input(Fore.BLUE+"Introduce Posicion inicial: trés letras en mayusculas seguidas: "+Fore.WHITE)
    for s in cambio_rotores:
        posini.append(s)
    a=posini[0]
    b=posini[1]
    c=posini[2]
    print("Sobre  la posicion: "+Fore.RED+a,b,c+" ",end="")
    e.posicion_inicial(r.rotor1,r.rotor2,r.rotor3,a,b,c)
    mensaje=input(Fore.BLUE+"Introduce mensaje secreto: "+Fore.WHITE)
    for i in mensaje:#poner una condicion si lo escrito no esta en mayusculas ponerlas. poner tambien espacios para frases
        indice=e.abecedario.index(i)
        indice=r.conexion(indice,e.rotor1)
        indice=r.conexion(indice,e.rotor2)
        indice=r.conexion(indice,e.rotor3)
        indice=rf.refleja(indice)
        indice=r.conexion_decodifica(indice,e.rotor3)
        indice=r.conexion_decodifica(indice,e.rotor2)
        fin=r.conexion_decodifica(indice,e.rotor1)
        mensaje_trans=e.abecedario[fin]
        print(Fore.GREEN+mensaje_trans+Fore.WHITE,end="")
 
def start2(mensaje):
    global mensaje_trans
    for i in mensaje:#poner una condicion si lo escrito no esta en mayusculas ponerlas. poner tambien espacios para frases
        indice=e.abecedario.index(i)
        indice=r.conexion(indice,e.rotor1)
        indice=r.conexion(indice,e.rotor2)
        indice=r.conexion(indice,e.rotor3)
        indice=rf.refleja(indice)
        indice=r.conexion_decodifica(indice,e.rotor3)
        indice=r.conexion_decodifica(indice,e.rotor2)
        fin=r.conexion_decodifica(indice,e.rotor1)
        mensaje_trans=e.abecedario[fin]
        print(Fore.GREEN+mensaje_trans+Fore.WHITE,end="")
 
 
 
 
def mensaje():
        global mensaje_trans
        texto_mensaje=etiqueta1.get()
        start2(texto_mensaje)
 
def fpantalla0():
    global etiqueta
    global etiqueta1
 
 
    pantalla0=Tk()
    pantalla0.geometry("800x600")
    pantalla0.title(" MAQUINA ENIGMA")
    pantalla0.iconbitmap("enigmaico.ico")
    pantalla0.config(bg="#EDBB99" )
 
 
    titulo=Label(pantalla0,text="Enigma",bg="black",fg="white",width="300",height="3",font=("calibri",15))
    titulo.pack()
 
 
 
 
    posicion_inicial=Entry(pantalla0,font="helvetica 20",width=4)
    posicion_inicial.pack()
 
    Label(text="").pack()
 
    boton1=Button(pantalla0,text="Activa posición inicial",bg="gold4",font=("calibri",10))
    boton1.pack()
    Label(text="").pack()
    Label(text="Introduzca el mensaje:").pack()
    etiqueta1=Entry(pantalla0,font="helvetica 20",width=50)
    etiqueta1.pack()
    Label(text="").pack()
 
    boton2=Button(pantalla0,text="Codifica y descodifica",bg="gold4",font=("calibri",10),command=mensaje).pack()
    Label(text="").pack()
    Label(text="TRASCRIPCION:").pack()
    Label(text="").pack()
 
    resultado_texto=Label(pantalla0).pack()
 
 
 
 
    '''image=PhotoImage(file="")
    image=image.subsample(2,2)
    label=Label(image=image)
    label.pack()'''
 
 
 
 
 
    pantalla0.mainloop()
 
fpantalla0()
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
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Variable en tkinter

Publicado por tincopasan (1082 intervenciones) el 13/02/2021 03:01:53
ni loco te corrijo todo lo que tenés mal o innecesario, hago algo funcional en base a tu código:
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
from tkinter import *
# ésta no es una buena practica, es mejor importar solo lo que vas a usar
 
def start2(mensaje):
    #etc...
    mensaje= mensaje[::-1] #solo para mostrar algo
    n.set(mensaje)
 
def mensaje():
    texto_mensaje = r.get()
    #otra vez una función innecesaria ya que podrías directamente llamar a start2
    start2(texto_mensaje)
 
 
#lo saque de la función, sino hay que declarar más cosas y además  ¿para qué, si es la que llamas como principal?
pantalla0=Tk()
pantalla0.geometry("800x600")
pantalla0.title(" MAQUINA ENIGMA")
pantalla0.config(bg="#EDBB99" )
titulo=Label(pantalla0,text="Enigma",bg="black",fg="white",width="300",height="3",font=("calibri",15))
titulo.pack()
posicion_inicial=Entry(pantalla0,font="helvetica 20",width=4)
posicion_inicial.pack()
 
r = StringVar()   #agrego una variable que se la asigno al texto de entrada
n = StringVar()
 
Label(text="").pack()
boton1=Button(pantalla0,text="Activa posición inicial",bg="gold4",font=("calibri",10))
boton1.pack()
Label(text="").pack()
Label(text="Introduzca el mensaje:").pack()
etiqueta1=Entry(pantalla0,textvariable=r,font="helvetica 20",width=50)
etiqueta1.pack()
Label(text="").pack()
boton2=Button(pantalla0,text="Codifica y descodifica",bg="gold4",font=("calibri",10),command=mensaje).pack()
Label(text="").pack()
Label(text="TRASCRIPCION:").pack()
Label(text="").pack()
resultado_texto=Label(pantalla0,textvariable= n).pack()
pantalla0.mainloop()

otra cosa no creo que te funcione bien tu código, enigma es un clásico de criptografía, hay cientos de ejemplos mejor implementados en la red.
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
Imágen de perfil de Javier
Val: 249
Ha aumentado su posición en 29 puestos en Python (en relación al último mes)
Gráfica de Python

Variable en tkinter

Publicado por Javier (313 intervenciones) el 13/02/2021 08:23:16
Bueno, muchas gracias, si hay cosas que no sirven o que iba haciendo pruebas y no las he borrado, m falta hacer el cambio de rotores, terminar el testting y demás cosas es cierto que sacando la interfaz de la función nos ahorramos más complicaciones y sí hay muchos más códigos de enigma muchísimo mejores, estoy aprendiendo ahora y estas pequeñas dudas y fallos son los que me ayudan a programar mejor o con más funcionalidad y gracias a ti ya otros programadores voy aprendiendo cada día más, lo probaré y arreglaré todo lo que has comentado.bun placer y de nuevo michisima 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