Luminous Lexicon Organizer Python GUI
👤 Sharing: AI
import tkinter as tk
from tkinter import ttk
from tkinter import messagebox
import json
import os
class LexiconOrganizer:
def __init__(self, master):
self.master = master
master.title("Luminous Lexicon Organizer")
master.geometry("600x400")
self.data = {}
self.filename = "lexicon.json"
# Load data if the file exists
if os.path.exists(self.filename):
with open(self.filename, 'r') as f:
try:
self.data = json.load(f)
except json.JSONDecodeError:
messagebox.showerror("Error", "Could not load lexicon file. File may be corrupt.")
self.data = {}
# Entry fields and labels
ttk.Label(master, text="Word:").grid(row=0, column=0, padx=5, pady=5, sticky='e')
self.word_entry = ttk.Entry(master, width=30)
self.word_entry.grid(row=0, column=1, padx=5, pady=5, sticky='w')
ttk.Label(master, text="Definition:").grid(row=1, column=0, padx=5, pady=5, sticky='e')
self.definition_entry = tk.Text(master, width=40, height=5)
self.definition_entry.grid(row=1, column=1, padx=5, pady=5, sticky='w')
# Buttons
ttk.Button(master, text="Add/Update Word", command=self.add_word).grid(row=2, column=0, columnspan=2, pady=10)
ttk.Button(master, text="Search", command=self.search_word).grid(row=3, column=0, padx=5, pady=5)
ttk.Button(master, text="Delete", command=self.delete_word).grid(row=3, column=1, padx=5, pady=5)
ttk.Button(master, text="Clear Fields", command=self.clear_fields).grid(row=4, column=0, columnspan=2, pady=10)
ttk.Button(master, text="Details", command=self.show_details).grid(row=5, column=0, columnspan=2, pady=10)
# Listbox for displaying words
self.word_listbox = tk.Listbox(master, width=50, height=10)
self.word_listbox.grid(row=6, column=0, columnspan=2, padx=5, pady=5)
self.word_listbox.bind('<Double-Button-1>', self.select_word)
# Populate the listbox
self.update_listbox()
def add_word(self):
word = self.word_entry.get().strip()
definition = self.definition_entry.get("1.0", 'end-1c').strip()
if not word:
messagebox.showerror("Error", "Word cannot be empty.")
return
self.data[word] = definition
self.save_data()
self.update_listbox()
self.clear_fields()
messagebox.showinfo("Success", f"Word '{word}' added/updated.")
def search_word(self):
word = self.word_entry.get().strip()
if not word:
messagebox.showerror("Error", "Please enter a word to search.")
return
if word in self.data:
self.definition_entry.delete("1.0", tk.END)
self.definition_entry.insert(tk.END, self.data[word])
else:
messagebox.showinfo("Not Found", f"Word '{word}' not found.")
def delete_word(self):
word = self.word_entry.get().strip()
if not word:
messagebox.showerror("Error", "Please enter a word to delete.")
return
if word in self.data:
del self.data[word]
self.save_data()
self.update_listbox()
self.clear_fields()
messagebox.showinfo("Success", f"Word '{word}' deleted.")
else:
messagebox.showinfo("Not Found", f"Word '{word}' not found.")
def clear_fields(self):
self.word_entry.delete(0, tk.END)
self.definition_entry.delete("1.0", tk.END)
def save_data(self):
with open(self.filename, 'w') as f:
json.dump(self.data, f)
def update_listbox(self):
self.word_listbox.delete(0, tk.END)
for word in sorted(self.data.keys()):
self.word_listbox.insert(tk.END, word)
def select_word(self, event):
selected_word = self.word_listbox.get(self.word_listbox.curselection())
self.word_entry.delete(0, tk.END)
self.word_entry.insert(0, selected_word)
self.search_word()
def show_details(self):
messagebox.showinfo("Details", "The Luminous Lexicon Organizer is a versatile tool designed to help you manage and organize your personal vocabulary or glossary. You can add words with their definitions, search for existing words, delete entries, and easily browse through your lexicon using the listbox. Data is saved to a JSON file so your entries are persistent.")
root = tk.Tk()
organizer = LexiconOrganizer(root)
root.mainloop()
👁️ Viewed: 6
Comments