thanks, deanhystad. You are really great !
I will save here another version, just a little bit different.
I will save here another version, just a little bit different.
import tkinter as tk import re def adauga_diacritice(): text = text_input.get("1.0", tk.END) words = [] for word in get_words(text): if word.lower() in plain_2_diacritic: diacritic_word = plain_2_diacritic[word.lower()] if word.istitle(): # Preserve title case words.append(diacritic_word.capitalize()) elif word.isupper(): # Preserve uppercase words.append(diacritic_word.upper()) else: words.append(diacritic_word) else: words.append(word) text = " ".join(words) text_input.delete("1.0", tk.END) text_input.insert("1.0", text) def make_diacritic_word_dictionary(): d = get_words( "Compatibilitatea sufletească nu este direct proporțională cu valoarea intensităţii sentimentelor." ) d2 = get_words( "Compatibilitatea sufleteasca nu este direct proportionala cu valoarea intensitatii sentimentelor." ) return {w2: w for w, w2 in zip(d, d2) if w != w2} def get_words(text): return re.findall(r'\b\w+\b', text) plain_2_diacritic = make_diacritic_word_dictionary() root = tk.Tk() text_input = tk.Text(root, height=20, width=50) text_input.insert( 1.0, "Sufleteasca nu este direct proportionala, cu valoarea intensitatii." ) text_input.pack(pady=20) btn_diacritice = tk.Button(root, text="Diacritice", command=adauga_diacritice) btn_diacritice.pack(side=tk.LEFT, padx=10) root.mainloop()OR THIS:
import tkinter as tk import re punctuation = re.compile("[:;,\.\"'”“\?!]") def get_words(text, lower=False): words = [re.sub(punctuation, "", word) for word in text.split()] if lower: return [word.lower() for word in words] return words def replace(text, old, new): return re.sub(r'\b' + re.escape(old) + r'\b', new, text, flags=re.IGNORECASE) def adauga_diacritice(): text = text_input.get("1.0", tk.END) words = get_words(text) for word in words: replacement = plain_2_diacritic.get(word.lower(), None) if replacement is not None: text = replace(text, word, replacement) text_input.delete("1.0", tk.END) text_input.insert("1.0", text) def make_diacritic_word_dictionary(): d = get_words( "Compatibilitatea sufletească nu este direct proporțională cu valoarea intensităţii sentimentelor.", lower=True, ) d2 = get_words( "Compatibilitatea sufleteasca nu este direct proportionala cu valoarea intensitatii sentimentelor.", lower=True, ) return {w2: w for w, w2 in zip(d, d2) if w != w2} plain_2_diacritic = make_diacritic_word_dictionary() root = tk.Tk() text_input = tk.Text(root, height=20, width=50) text_input.insert( 1.0, "Sufleteasca nu este direct proportionala, cu valoarea intensitatii." ) text_input.pack(pady=20) btn_diacritice = tk.Button(root, text="Diacritice", command=adauga_diacritice) btn_diacritice.pack(side=tk.LEFT, padx=10) root.mainloop()