|
31
|
Programación / Scripting / Re: Que todos los entry dentro de un frame sean readonly en tkinter.
|
en: 21 Octubre 2022, 02:04 am
|
Gracias Dani, dejo lo que logre, para ayudarlos a entender, les aclaro que todas las veces que necesito pasar muchos parámetros a las funciones los pongo a todos en una lista y este es el código.- # lista para pasar los parametros a funciones. parametros = [] parametros.append(servicios) # [0] Ventana parametros.append(combo_mes) # [1] Mes. parametros.append(combo_anio) # [2] Año. parametros.append(caja_entrys) # [3] Frame Label y Entrys. parametros.append(entrada_epe_monto) # [4] EPE monto. parametros.append(entrada_epe_kwh) # [5] EPE kwh. parametros.append(entrada_gas_monto) # [6] GAS monto. parametros.append(entrada_gas_M3) # [7] GAS M3. parametros.append(entrada_comuna) # [8] Comuna. parametros.append(entrada_ceodal) # [9] Ceodal. parametros.append(entrada_cable) # [10] Cable Max. parametros.append(caja_botones) # [11] Frame botones.
def agregar(parametros): parametros[11].place_forget() # Activar todos los entrys. indice = 4 while indice < 11: parametros[indice].config(state=tk.NORMAL) indice += 1
Slds. Daniel ☕☕☕
|
|
|
34
|
Programación / Scripting / Que todos los entry dentro de un frame sean readonly en tkinter.
|
en: 20 Octubre 2022, 16:40 pm
|
Bueno, eso, tengo 7 entrys dentro de un frame y quisiera que sean todos de solo lectura hasta que se pulse el botón <Agregar>, es bastante tedioso tener que cambiar el estado de cada uno cada vez que se quieran editar.- Encontré por allí una manera de hacerlo con un bucle for, pero no me convenció.- Les dejo el programa por si alguien necesita correrlo… import tkinter as tk import Funciones from tkinter import ttk from functools import partial from idlelib.tooltip import Hovertip def centrarVentana(root): w = 430 h = 375 ws = root.winfo_screenwidth() hs = root.winfo_screenheight() x = (ws/2) - (w/2) y = (hs/2) - (h/2) root.geometry('%dx%d+%d+%d' % (w, h, x, y)) def main(): servicios = tk.Tk() servicios.title(" Servicios.") centrarVentana(servicios) # Mensajes(label) mensaje_mes = tk.Label(servicios, text="Mes", font=("Vardana", 12)) mensaje_mes.place(x=15, y=10) # Llenar el Combobox de los meses. meses = Funciones.meses_() # Llenar combo MES y seleccionar el MES actual. combo_mes = ttk.Combobox(servicios, state="readonly", width=9, font=("Verdana", 11), values=meses[0]) combo_mes.place(x=60, y=10) combo_mes.bind("<<ComboboxSelected>>") combo_mes.set(meses[1]) mensaje_anio = tk.Label(servicios, text="Año", font=("Vardana", 12)) mensaje_anio.place(x=15, y=50) combo_mes.set(meses[1]) año = Funciones.anios_() # Llenar combo AÑO y seleccionar el AÑO actual. combo_anio = ttk.Combobox(servicios, state="readonly", width=9, font=("Verdana", 11), values=año[0]) combo_anio.place(x=60, y=50) combo_anio.bind("<<ComboboxSelected>>") combo_anio.set(año[1]) # Frame para contener los botones caja_entrys = tk.Frame(servicios) caja_entrys.place(x=5, y=85) caja_entrys.config(width="416", height="213") caja_entrys.config(bd=5) caja_entrys.config(relief="ridge") mensaje_epe = tk.Label(caja_entrys, text="E.P.E - Factura......$ Kwh....$", font=("Vardana", 12)) mensaje_epe.place(x=5, y=10) mensaje_gas = tk.Label(caja_entrys, text="Gas - Factura.........$ M3......$", font=("Vardana", 12)) mensaje_gas.place(x=5, y=50) mensaje_comuna = tk.Label(caja_entrys, text="Comuna..................$", font=("Vardana", 12)) mensaje_comuna.place(x=5, y=90) mensaje_ceodal = tk.Label(caja_entrys, text="Ceodal....................$", font=("Vardana", 12)) mensaje_ceodal.place(x=5, y=130) mensaje_cable = tk.Label(caja_entrys, text="Cable Max..............$", font=("Vardana", 12)) mensaje_cable.place(x=5, y=170) # Entradas(E.P.E-Factura) entrada_epe_monto = tk.Entry(caja_entrys, font=("Vardana", 12), width=10) entrada_epe_monto.place(x=155, y=10) # Entradas(E.P.E-Kwh) entrada_epe_kwh = tk.Entry(caja_entrys, font=("Vardana", 12), width=5) entrada_epe_kwh.place(x=335, y=10) # Entrada(Gas- Factura) entrada_gas_monto = tk.Entry(caja_entrys, font=("Vardana", 12), width=10) entrada_gas_monto.place(x=155, y=50) # Entradas(Gas- M3) entrada_gas_M3 = tk.Entry(caja_entrys, font=("Vardana", 12), width=5) entrada_gas_M3.place(x=335, y=50) # Entrada(Comuna) entrada_comuna = tk.Entry(caja_entrys, font=("Vardana", 12), width=10) entrada_comuna.place(x=155, y=90) # Entrada(Ceodal) entrada_ceodal = tk.Entry(caja_entrys, font=("Vardana", 12), width=10) entrada_ceodal.place(x=155, y=130) # Entrada(Cable) entrada_cable = tk.Entry(caja_entrys, font=("Vardana", 12), width=10) entrada_cable.place(x=155, y=170) # Frame para contener los botones caja_botones = tk.Frame(servicios) caja_botones.place(x=5, y=305) caja_botones.config(width="416", height="60") caja_botones.config(bd=5) caja_botones.config(relief="ridge") # Botón Agregar texto = ''' Agregar movimiento, no olvide seleccionar la fecha correcta... ''' boton_agregar = ttk.Button(caja_botones, text="Agregar", command=partial(Funciones.agregar, caja_botones)) boton_agregar.place(x=5, y=5, width=80, height=40) hovertip = Hovertip(boton_agregar, texto) # Botón Estadisticas boton_estad = ttk.Button(caja_botones, text="Estadisticas", command=partial(Funciones.estadisticas)) boton_estad.place(x=95, y=5, width=80, height=40) hovertip = Hovertip(boton_estad, ' Estadisticas de servicios ') # Botón Cerrar boton_cerrar = ttk.Button(caja_botones, text="Cerrar", command=servicios.destroy) boton_cerrar.place(x=320, y=5, width=80, height=40) hovertip = Hovertip(boton_cerrar, ' Cerrar aplicación. ') servicios.mainloop() if __name__ == '__main__': main()
from datetime import datetime def meses_(): meses = ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"] now = datetime.now() mes = now.month actual = meses[mes-1] return meses, actual def anios_(): años = ["2010", "2011", "2012", "2013", "2014", "2015", "2016", "2017", "2018", "2019", "2020", "2021", "2022", "2023", "2024", "2025", "2026", "2027", "2028", "2029", "2030", "2031", "2032", "2033"] now = datetime.now() actual = now.year return años, actual def agregar(caja_botones): caja_botones.place_forget() def estadisticas(): print("estadisticas")
Desde ya muchas gracias y que tengan todos un lindo jueves... Slds. Daniel ☕☕☕
|
|
|
35
|
Programación / Scripting / Re: Seleccionar palabras con espacios en widget TEXT en tkinter…
|
en: 17 Octubre 2022, 01:00 am
|
«En mi caso no soy adivino…» me hago cargo y reconozco que mostré un código que solamente yo podría entender, pero tiene mucho que ver con el código que dejo a continuación(justo en el momento que lo probé y lo iba a subir estaba en eso cuando leí «reymosquito y 134 Visitantes…», no podía perderme tu ayuda).- def copiar_al_portapapeles(muestra_codigo): texto = muestra_codigo.get("sel.first", "sel.last") print(texto) clib.copy(texto)
Si te parece que ves algo que pueda proporcionar algún error, espero tu comentario.- Lo tuyo funciona de maravillas, muchas gracias Ahora lo implementé así: def copiar_al_portapapeles(muestra_codigo): try: texto = muestra_codigo.get("sel.first", "sel.last") except: texto = muestra_codigo.get("1.0", "end") clib.copy(texto)
Slds. Daniel ☕☕☕
|
|
|
36
|
Programación / Scripting / Seleccionar palabras con espacios en widget TEXT en tkinter…
|
en: 16 Octubre 2022, 20:11 pm
|
Hola gente, ¿cómo están?, demasiado tiempo practicando y no logro encontrar la solución. Dejo algunos ejemplos: «from collections import Counter»Si arrastro el mouse del inicio al final de «from» ok Si arrastro el mouse del inicio al final de «from collections» copia solamente «collections»lo que necesito es que copie el total de lo seleccionado.- En cuanto al «doble clic» no me hace falta, por lo menos en este programa… Lo que ocurre también es que seleccionar todo lo tengo implementando correctamente, pero hay texto que debo extraer solo una parte.- def copiar_al_portapapeles(t1, muestra_codigo): inicio = muestra_codigo.index("insert-1c wordstart") final = muestra_codigo.index("insert -1c wordend") texto = muestra_codigo.get(inicio, final) print(texto) clib.copy(texto)
Desde ya gracias por el tiempo que le dediquen, gracias.- Slds. Daniel ☕☕☕
|
|
|
38
|
Programación / Scripting / Re: Obtener el número mayor con comprensión de listas en Python.
|
en: 10 Octubre 2022, 17:40 pm
|
Hola Rey, gracias por ocuparte.- Conclusiones: Esto decía el enunciado en el libro, dentro de comprensión de lista: EJERCICIOS DE REPASO: 1. Escriba un programa en Python que acepte una lista de valores numéricos y obtenga su valor máximo sin utilizar la función «built-in» max() (solución). Entrada: [6, 3, 9, 2, 10, 31, 15, 7] Salida: 31 ¿Cómo querés que lo encare?, no llevaba ni 3 horas(literal) leyendo sobre comprensión de lista y con esto te doy la razón en cuanto a tu última línea.- Esto es lo que me ocurre si no lo hago con lista de listas... a = [10, 13, 454, 66, 44] b = [max(p) for p in a] print(b)
[...] b = [max(p) for p in a] TypeError: 'int' object is not iterable
Slds. Daniel ☕☕☕
|
|
|
39
|
Programación / Scripting / Re: Obtener el número mayor con comprensión de listas en Python.
|
en: 9 Octubre 2022, 16:05 pm
|
El que busca encuentra y por fin lo encontré.- Si lo envolves con corchetes, mayor pasa a ser una lista con un solo elemento, si haces lo contrario mayor es del tipo int.- Si invertís el mayor que encuentra el menor de la lista.- import functools lista = [10, 13, 54, 661, 1, 44, 5, 222, 7] mayor = [(functools.reduce(lambda a,b: a if (a > b) else b, lista))] print(mayor)
Bueno, parece ser todo, feliz domingo... Slds. Daniel ☕☕☕
|
|
|
|
|
|
|