|
51
|
Programación / Scripting / Relación entre píxeles y fila/columnas en widget TEXT.
|
en: 10 Septiembre 2022, 20:51 pm
|
Hola gente, ¿cómo están? Necesitaría saber si se puede obtener alguna relación entre píxeles y fila/columnas.- Para ejemplificar, tengo un widget TEXT y necesito relacionar el contenido en fila/columnas para establecer las dimensiones de este y la ventana.- Bueno, es todo, pase bastante tiempo buscando y nada y eso que tengo bastante documentación pero nada.- from tkinter import ttk import tkinter as tk import tkinter.scrolledtext as scrolledtext import codecs def centrar_ventana(root): w = 500 h = 500 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)) #Función para pasar de los métodos al correspondiente código. def boton_codigo(lista_ayuda_secundaria, segunda_Ayuda, lista_codigo, ventana): if len(segunda_Ayuda.curselection())!=0: listaCodigo = [] codigoLista = "".join(lista_codigo) cont=0 with codecs.open('codigos.txt', 'r', encoding='utf-8') as archivo: for linea in archivo: lineaTmp = linea.rstrip('\n,\r') tmpLinea = lineaTmp.split(',') codigoCodigos = lineaTmp[:4] if codigoLista == codigoCodigos: cont += 1 listaCodigo.append(tmpLinea[1]) elif codigoLista != codigoCodigos and cont == 1: break else: messagebox.showinfo(message="Debe seleccionar un item.", title="!!! Atención !!!") t1 = tk.Toplevel(ventana) t1.title("Códigos") t1.focus_set() centrar_ventana(t1) t1.grab_set() t1.transient(master=ventana) muestra_codigo = scrolledtext.ScrolledText(t1, width=58, height = cont+1) muestra_codigo.place(x=10, y=10) for lista in listaCodigo: muestra_codigo.insert(tk.INSERT, lista) muestra_codigo.config(state= tk.DISABLED) t1.wait_window(t1)
Slds. Daniel ☕☕☕
|
|
|
53
|
Programación / Scripting / Consulta sobre listbox en tkinter.(ayuda personalizada)
|
en: 5 Septiembre 2022, 22:35 pm
|
Hola a todos, ¿cómo están? Tengo 2 preguntas para hacerles: Una lista como esta: 0100,archivos 0101,ASCII 0102,bucles 0103,cadenas 0104,condicionales 0105,datos 0106,diccionarios 0107,fechas 0108,listas 0109,poo 0110,tuplas 0111,búsqueda binaria 0112,validar 0113,errores 0114,funciones 0115,gráfica 0116,abecedario ¿Es necesario poner todas estas líneas para obtener la cadena seleccionada del listbox o hay algún método que ya viene para esto? def boton_ayuda(primer_Ayuda, inicio_ayuda): if len(primer_Ayuda.curselection())!=0: items = primer_Ayuda.get(primer_Ayuda.curselection()[0]) codigo = 0 for inicio in inicio_ayuda: if inicio[1] == items: codigo = inicio[0] break pasar_ayuda_secundaria(codigo) else: messagebox.showinfo(message="Debe seleccionar un item.", title="!!! Atención !!!")
La segunda: Como no tengo experiencia con compresión de lista, pregunto: ¿puedo insertar un condicional if para que por ej. si él .txt contiene 3000 líneas/filas agregue tan solo las que contengan el código 0111? def pasar_ayuda_secundaria(codigo): with codecs.open('segundaAyuda.txt', 'r', encoding='utf-8') as archivo: segunda_ayuda=[linea.strip().split(",") for linea in archivo]
Desde ya muchas gracias. Slds. Daniel ☕☕☕
|
|
|
54
|
Programación / Scripting / Re: Obtener palabra a partir de la última letra(widget TEXT)
|
en: 1 Septiembre 2022, 14:48 pm
|
En parte pude disipar mis dudas con "wordstart", "wordend" necesitaba la fila/columna de la palabra para que al mostrar las posibles correctas en un listbox si se selecciona alguna pueda reemplazarla en el bloc de notas, créanme que no me dio la cara para consultarlos(por aquello de ponerme pesado) lo puse para que lo lean entre líneas, pero no dio resultado, en fin me costó mucho, pero mucho encontrar tan sencilla solución por eso la exponga para que si alguien necesita algo parecido no reniegue tanto.- #-*- coding: utf -8 -*- import tkinter as tk def obtener_palabra(event=None): palabra = text.get("insert -1c wordstart", "insert -1c wordend" ) if palabra in "\n ": palabra = text.get("insert -1c wordstart", "insert -1c wordend") inicio = text.index("insert-1c wordstart") final = text.index("insert-1c wordend") print(f"{palabra}..: Inicia {inicio} Finaliza {final}") win = tk.Tk() text = tk.Text(win) text.pack() text.bind("<space>", obtener_palabra) text.focus() win.mainloop()
Slds. Daniel ☕☕☕
|
|
|
55
|
Programación / Scripting / Re: Bloc de notas con corrector ortográfico propio.
|
en: 30 Agosto 2022, 22:21 pm
|
Gracias a ambos por ocuparse, Tachikomaia dame un rato para aclararte las dudas, estoy entusiasmado con la librería "enchant" con la "h" funciona maravilloso, con el resto hay algunas cosas para refinar, dejo lo que llevo hecho.- !!!Sorpresa Rey!!!, bueno expongo igual mi código.- import enchant import codecs def leer_lemario(): lemario = [] with codecs.open('Ortografia.txt', 'r', encoding='utf-8') as archivo: for linea in archivo: linea = linea.strip() if len(linea) > 0: lemario.append(linea) return lemario def main(): lemario = leer_lemario() palabra = True while palabra: palabra = input("Ingrese la palabra a corregir...: ") if buscar_palabra(palabra, lemario) == True: print(f'\nLa palabra "{palabra}" existe en el diccionario y es correcta.\n') else: resultado = diferencias(lemario, palabra) if len(resultado) >= 1: print(resultado) def buscar_palabra(palabra, lemario): for lema in lemario: if palabra == lema: return True return False def diferencias(lemario, palabra): cantidad = [] for lem in lemario: difer = enchant.utils.levenshtein(lem, palabra) if difer >=1 and difer <=2: cantidad.append(lem) return cantidad main()
Slds. Daniel ☕☕☕
|
|
|
56
|
Programación / Scripting / Bloc de notas con corrector ortográfico propio.
|
en: 30 Agosto 2022, 17:47 pm
|
Estoy consiente que esto no tiene mucho que ver con la esencia del foro, pero necesito de esas mentes brillantes y criteriosas de este para darle forma a mi proyecto de "bloc de notas" con corrector ortográfico.- Lo que llevo hecho: 1): Si la palabra está bien escrita(está en el diccionario, todo ok) 2): De no ser así busco una a una las letras(con igual longitud) y si hay 1 o 2 diferencias las incluyo para mostrar posibles palabras correctas.- Hasta hay está casi correcto, casi porque por momentos aparecen 20 o más coincidencia y no se pueden ni mostrar.- Pero las dudas me las da las hache al comienzo y en el interior de las palabras.- ¿alguna idea?.- Mi idea con las haches: Al inicio: "hirvieron", si la palabra a corregir es "irvieron" fácil, busco palabras en el diccionario que tengan una letra más y comparo "irvieron" con "irvieron" y la agrego con un error, pero que pasa si la palabra a corregir es "irbieron" (lo mando a la primaria, jajajajaj).- Con una hache intermedia "albahaca" comparo "alba" y "aca" y si coinciden la agrego.- Les dejo lo que llevo hecho, si alguien desea ayudarme muchas gracias... Aclaro que tengo conocimiento de la existencia de las bibliotecas "autocorrect" "pyspellchecker" "textblob" es para practicar e ir aprendiendo el lenguaje más en profundidad.- import codecs def main(): lemario = leer_lemario() palabra = True while palabra: palabra = input("Ingrese la palabra a corregir...: ") if buscar_palabra(palabra, lemario) == True: print(f'\nLa palabra "{palabra}" existe en el diccionario y es correcta.\n') else: parecidos = buscar_parecidos(palabra, lemario) if len(parecidos) >= 1 and len(parecidos) <= 10: print(f'Palabras parecidas:\n{parecidos}\n') else: print("Posible faltante de hache...") def leer_lemario(): lemario = [] with codecs.open('Ortografia.txt', 'r', encoding='utf-8') as archivo: for linea in archivo: linea = linea.strip() if len(linea) > 0: lemario.append(linea) return lemario def buscar_palabra(palabra, lemario): for lema in lemario: if palabra == lema: return True return False def buscar_parecidos(palabra, lemario): parecidos = [] for lema in lemario: if len(lema) == len(palabra) and letras_distintas(lema, palabra) <= 2: parecidos.append(lema) return parecidos def letras_distintas(palabra, lema): errores = 0 for i in range(len(palabra)): if palabra[i] != lema[i]: errores = errores + 1 return errores main()
Slds. Daniel ☕☕☕
|
|
|
57
|
Programación / Scripting / Re: Obtener palabra a partir de la última letra(widger TEXT)
|
en: 28 Agosto 2022, 15:11 pm
|
Hola Rey, el código cumple con el cometido maravillosamente, le agregué un evento <Return> por obvias razones. Me surgen dudas con "wordstart", "wordend" que por lo poco que encontré es exclusiva del widget Text, la utilizaré sin más y ya está Gracias y hasta la próxima...
Slds. Daniel ☕☕☕
|
|
|
59
|
Programación / Scripting / Obtener palabra a partir de la última letra(widget TEXT)
|
en: 27 Agosto 2022, 20:51 pm
|
Hola gente, ¿cómo están?. Voy a tratar de ser práctico, estoy haciendo una especie de bloc de notas con la particularidad que tiene un corrector ortográfico y para ello decidí que al pulsar la tecla <space> se corrija la palabra que se acaba de escribir.- El caso es que de esta manera obtengo la última letra¿como hacer para retroceder y obtener la palabra completa?.- Si la respuesta es regresando con las coordenadas una a una hasta que encuentre un espacio o la columna sea cero, ya me imagino como hacerlo la consulta es ¿hay otra manera más práctica? keyboard.on_press_key("space", partial(corregir.comienzo, editorTexto, ortografia)) def comienzo(editorTexto, ortografia, event): lineaColumna = editorTexto.index(tk.INSERT) print(lineaColumna)
"la consulta" a = 1.11 t = 1.10 l = 1.9 u = 1.8 [...]
Slds. Daniel ☕☕☕
|
|
|
|
|
|
|