# Se ejecutan funciones que no he llamado

**URL:** <https://pyar.discourse.group/t/se-ejecutan-funciones-que-no-he-llamado/1014>\
**Category:** Sin categoría\
**Created:** [25 Octubre, 2022 21:22 UTC](https://pyar.discourse.group/t/se-ejecutan-funciones-que-no-he-llamado/1014 "2022-10-25T21:22:22Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![cmgelectronica](https://avatars.discourse-cdn.com/v4/letter/c/e47774/32.png) [@cmgelectronica](https://pyar.discourse.group/u/cmgelectronica)\
**Post date:** [25 Octubre, 2022 21:22 UTC](https://pyar.discourse.group/t/se-ejecutan-funciones-que-no-he-llamado/1014/1 "2022-10-25T21:22:22Z")

</div>

Hola, en el siguiente código al iniciar el programa se imprimen tres datos (el mismo dato que está en el archivo num.txt) que deberían imprimirse sólo si hago click en “Gastos”, “Viáticos”, o “Viáticos Múltiples”.  
Por qué sucede ésto? estoy llamando mal a las funciones? GRACIAS!

```auto
import tkinter as tk
from os import path
    
def numero():
    directorio = path.dirname(path.abspath( __file__ ))
    archivo = path.join(directorio,"num.txt")
    datos = open(archivo)
    num = datos.read()
    print(num)
    datos.close()
    
def gastos():
    numero()
    
def viaticos():
    numero()
    
def viatimulti():
    numero()
    
def leer():
    pass

def cambiar():
    pass

def imprimir():
    pass

def fildeta():
    pass

def filjusti():
    pass

def filsoli():
    pass

def filpreun():
    pass

def filpreto():
    pass

#ventana principal
ventana=tk.Tk()
ventana.title("programa - v0.2")
ventana.geometry('+0+0')
ventana.geometry('800x600')
ventana.resizable(False, False)

#barra de menu
barra_menus = tk.Menu()
menu_archivo = tk.Menu(barra_menus, tearoff=False)
barra_menus.add_cascade(menu=menu_archivo, label="Archivo")
menu_nuevo = tk.Menu(menu_archivo, tearoff=False)
menu_nuevo.add_command(label="Gastos", accelerator="Ctrl+G", compound=tk.LEFT)
ventana.bind_all("<Control-g>", gastos())
menu_nuevo.add_separator()
menu_nuevo.add_command(label="Viáticos", accelerator="Ctrl+V", compound=tk.LEFT)
ventana.bind_all("<Control-v>", viaticos())
menu_nuevo.add_separator()
menu_nuevo.add_command(label="Viáticos Múltiples", accelerator="Ctrl+M", compound=tk.LEFT)
ventana.bind_all("<Control-m>", viatimulti())
menu_abrir = tk.Menu(menu_archivo, tearoff=False)
menu_abrir.add_command(label="Visualizar", accelerator="Ctrl+L", compound=tk.LEFT)
ventana.bind_all("<Control-l>", leer())
menu_abrir.add_separator()
menu_abrir.add_command(label="Modificar", accelerator="Ctrl+C", compound=tk.LEFT)
ventana.bind_all("<Control-c>", cambiar())
menu_abrir.add_separator()
menu_filtrar = tk.Menu(menu_abrir, tearoff=False)
menu_filtrar.add_command(label="Detalle", accelerator="Ctrl+D", compound=tk.LEFT)
ventana.bind_all("<Control-d>", fildeta())
menu_filtrar.add_separator()
menu_filtrar.add_command(label="Justificación", accelerator="Ctrl+J", compound=tk.LEFT)
ventana.bind_all("<Control-j>", filjusti())
menu_filtrar.add_separator()
menu_filtrar.add_command(label="Solicitante", accelerator="Ctrl+S", compound=tk.LEFT)
ventana.bind_all("<Control-s>", filsoli())
menu_filtrar.add_separator()
menu_filtrar.add_command(label="Precio Unitario", accelerator="Ctrl+U", compound=tk.LEFT)
ventana.bind_all("<Control-u>", filpreun())
menu_filtrar.add_separator()
menu_filtrar.add_command(label="Precio Total", accelerator="Ctrl+T", compound=tk.LEFT)
ventana.bind_all("<Control-t>", filpreto())
#menu_filtrar.add_separator()

# colocar acá todos los filtros que se deseen para establecer el resumen
menu_archivo.add_cascade(menu=menu_nuevo, label="Nevo Pedido...")
menu_archivo.add_separator()
menu_archivo.add_cascade(menu=menu_abrir, label="Abrir Pedido...")
menu_archivo.add_separator()
menu_archivo.add_command(label="Salir", command=ventana.destroy)
menu_abrir.add_cascade(menu=menu_filtrar, label="Filtrar por...")
ventana.config(menu=barra_menus)

ventana.mainloop()

```

---

<div class="post-metadata">

**Author:** ![marcosalcazar](https://avatars.discourse-cdn.com/v4/letter/m/45deac/32.png) [@marcosalcazar](https://pyar.discourse.group/u/marcosalcazar)\
**Post date:** [26 Octubre, 2022 01:57 UTC](https://pyar.discourse.group/t/se-ejecutan-funciones-que-no-he-llamado/1014/2 "2022-10-26T01:57:27Z")

</div>

Hola! Efectivamente estás ejecutando las funciones al ejecutar gastos(), viaticos(), viatimulti(). Probá pasando solamente el handler de las funciones al bindear los shortcuts a la ventana, así:

`ventana.bind_all("<Control-g>", gastos)`

---

<div class="post-metadata">

**Author:** ![cmgelectronica](https://avatars.discourse-cdn.com/v4/letter/c/e47774/32.png) [@cmgelectronica](https://pyar.discourse.group/u/cmgelectronica)\
**Post date:** [26 Octubre, 2022 18:32 UTC](https://pyar.discourse.group/t/se-ejecutan-funciones-que-no-he-llamado/1014/3 "2022-10-26T18:32:40Z")

</div>

Muchas gracias por la ayuda. Ahora no me linkeaba a la función. Cuando presionaba por ejemplo en Gastos no entraba a la función gastos(). Me di cuenta que en la línea de add\_command faltaba justamente command=función. Ahora anda perfecto. Muchas gracias!!!
