spacepaste

  1.  
  2. #! /usr/bin/env python3
  3. #GeologyDict by Ali M
  4. import sqlite3 as sqlite
  5. import tkinter as tk
  6. from tkinter import Text
  7. from tkinter import Entry
  8. from tkinter import Scrollbar
  9. from tkinter import ttk
  10. #GUI Widgets
  11. class EsperantoDict:
  12. def __init__(self, master):
  13. master.title("EsperantoDict")
  14. master.resizable(False, False)
  15. master.configure(background='#EAFFCD')
  16. self.search_var = tk.StringVar()
  17. self.search_var.trace("w", lambda name, index, mode: self.update_list())
  18. self.style = ttk.Style()
  19. self.style.configure("TFrame", background='#EAFFCD')
  20. self.style.configure("TButton", background='#EAFFCD')
  21. self.style.configure("TLabel", background='#EAFFCD')
  22. self.frame_header = ttk.Frame(master, relief=tk.FLAT)
  23. self.frame_header.pack(side=tk.TOP, padx=5, pady=5)
  24. self.logo = tk.PhotoImage(file=r'C:\EsperantoDict\eo.png')
  25. self.small_logo = self.logo.subsample(10, 10)
  26. ttk.Label(self.frame_header, image=self.small_logo).grid(row=0, column=0, stick="ne", padx=5, pady=5, rowspan=2)
  27. ttk.Label(self.frame_header, text='EsperantoDict', font=('Arial', 18, 'bold')).grid(row=0, column=1)
  28. self.frame_content = ttk.Frame(master)
  29. self.frame_content.pack()
  30. self.entry_search = ttk.Entry(self.frame_content, textvariable=self.search_var)
  31. self.entry_search.grid(row=0, column=0)
  32. self.entry_search.bind('<Button-1>', self.entry_delete)
  33. self.button_search = ttk.Button(self.frame_content, text="Search")
  34. self.aks = tk.PhotoImage(file=r'C:\EsperantoDict\search.png')
  35. self.small_aks = self.aks.subsample(3, 3)
  36. self.button_search.config(image=self.small_aks, compound=tk.LEFT)
  37. self.button_search.grid(row=0, column=1, columnspan=2)
  38. self.listbox = tk.Listbox(self.frame_content, height=28)
  39. self.listbox.grid(row=1, column=0)
  40. self.scrollbar = ttk.Scrollbar(self.frame_content, orient=tk.VERTICAL, command=self.listbox.yview)
  41. self.scrollbar.grid(row=1, column=1, sticky='ns')
  42. self.listbox.config(yscrollcommand=self.scrollbar.set)
  43. self.listbox.bind('<<ListboxSelect>>', self.enter_meaning)
  44. self.textbox = tk.Text(self.frame_content, width=60, height=27)
  45. self.textbox.grid(row=1, column=2)
  46. # SQLite
  47. self.db = sqlite.connect(r'C:\EsperantoDict\test.db')
  48. self.cur = self.db.cursor()
  49. self.cur.execute('SELECT Esperanto FROM Words')
  50. for row in self.cur:
  51. self.listbox.insert(tk.END, row)
  52. for row in range(0, len(row), 2):
  53. self.listbox.itemconfigure(row, background= "#f0f0ff")
  54. def update_list(self):
  55. search_term = self.search_var.get()
  56. for item in self.listbox.get(0, tk.END):
  57. if search_term.lower() in item:
  58. self.listbox.delete(0, tk.END)
  59. self.listbox.insert(tk.END, item)
  60. # SQLite
  61. def enter_meaning(self, tag):
  62. if self.listbox.curselection():
  63. results = self.cur.execute("SELECT English FROM Words")
  64. for row in results:
  65. self.textbox.insert(tk.END, row)
  66. def entry_delete(self, tag):
  67. self.entry_search.delete(0, tk.END)
  68. return None
  69. def main():
  70. root = tk.Tk()
  71. esperantodict = EsperantoDict(root)
  72. root.mainloop()
  73. if __name__ == '__main__': main()
  74. #db tbl name: Words
  75. ##db first field name: Esperanto
  76. ##db second field name: English
  77.