Python - Usar datos en una función (Def)

 
Vista:

Usar datos en una función (Def)

Publicado por Arturo Fdez-Pacheco Conesa (5 intervenciones) el 21/05/2025 09:21:54
Buenos días.

Tengo un módulo .py para la actualización de una tabla access con los botones Alta, Baja y Grabar.

Para grabar (def Grabar) he definido dos variables en la ventana principal (Tk) id, tipooper y un campo Entry para modificar el registro seleccionado o el texto a añadir en caso de Alta.

Al pulsar el botón Alta (def Alta) inicializo los valores id = 0 y tipooper = 'A' y hago un Entry para obtener el valor del campo a añadir y pulso el botón Grabar

Para poder actualizar/eliminar un registro lo selecciono previamente de un Treeview e inicializo el campo id con el id del registro seleccionado y un campo texto con el valor del campo en el registro para poder ser modificado.

Al pulsar el botón Baja (def Baja) inicializo el valor de tipooper = 'B' y llamo a la función Grabar (Def Grabar).

Al pulsar el botón Grabar (def Grabar) los valores tipooper e id se han perdido (tipooper ='' e id =0)

¿Cómo puedo y donde definir ambas variables para que puedan ser utilizadas en cualquier función (def) del programa?.

Vengo de Visual Studio y se definen al principio del formulario y sirven para todos los eventos del formulario.

Gracias por vuestra atención

P.D. Para probar los he definido a continuación de los import y no conserva los valores. Luego he probado a definirlo después de definir la ventana (Tk) y tampoco.
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

Usar datos en una función (Def)

Publicado por tincopasan (1087 intervenciones) el 22/05/2025 04:31:55
en tkinter las variables se declaran de otra forma, no tan explícita como en python. suponiendo que.
1
2
id= IntVar()  # Declara variable de tipo entero
tipooper = StringVar()  # Declara variable de tipo cadena
también es posible asignarle un valor al declararla.
1
tipooper = StringVar(value="B")
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Plutarco
Val: 45
Ha disminuido 1 puesto en Python (en relación al último mes)
Gráfica de Python

Usar datos en una función (Def)

Publicado por Plutarco (31 intervenciones) el 12/08/2025 20:52:44
Lo que entiendo es que tienes un solo archivo .py, algo así en tu estructura:

from tkinter import *
from datetime import datetime
import shutil
.
.
.

def HazAlgo():
instrucciones
.
.
return


raiz = Tk()

raiz.title("Titulo de la ventana")
raiz.resizable(0, 0)

frame_1 = Frame(raiz)
.
.
.
tipooper =''
id = 0
.
.
etc. etc.

HazAlgo()

raiz.mainloop()



Para que puedas usarlas en cualquier parte debes declararlas al principio del código, es decir:

from tkinter import *
from datetime import datetime
import shutil
.
.
.
tipooper =''
id = 0

En ese momento ya son globales para todo tu módulo, si vas a cambiar su valor dentro de una función
usa la declaracion "global"

def HazAlgo():
golbal tipooper, id

tipooper = 'resta'
id = 8

return

aquí ya cambiaron su valor y lo mantendrán a lo largo del módulo.


También puedes pasarlos como parámetros a la función

def Suma(a, b)
return print(a + b)


a = 1
b = 2

Suma(a, b)


Espero haber entendido tu pregunta y poder ayudarte a resolver tu tema.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar