【发布时间】:2020-09-26 01:52:44
【问题描述】:
我正在用 tkinter 开发一个字典应用程序。我有一些单词及其含义存储在 sqlite 数据库中,其中一个单词写成“XML”,“Access”。现在,每当我在条目小部件中输入诸如(xml 或 Xml 或 ACCESS 或访问)之类的词并单击搜索按钮时,它都会显示“未找到词”。我希望这个词忽略任何大小写敏感性。无论我输入“xml”或“Xml”或“ACCESS”或“access”之类的词,我都希望显示一个词的含义
import tkinter as tk
import sqlite3
from tkinter import messagebox
from ttkthemes import ThemedStyle
from tkinter import ttk
from PIL import ImageTk, Image
import os
import sys
########### DEF FOR SEARCH #######
def search(event=''):
if getattr(sys, 'frozen', False):
data_folder=sys._MEIPASS
else:
data_folder=os.getcwd()
conn = sqlite3.connect(os.path.join(data_folder,'GI_DICTION4.db'))
cur = conn.cursor()
tex.delete(1.0, "end")
data = v.get().swapcase()
cur.execute("SELECT Meaning FROM Tables2 WHERE Words= ?", (data.swapcase(),))
var = cur.fetchall()
if var:
tex.insert("end", var[0]) # accessing the meaning
else:
tex.insert("end","Word not found")
def refresh():
entry.delete(0, "end")
tex.delete(1.0, "end")
def fetch_data(word):
if getattr(sys, 'frozen', False):
data_folder=sys._MEIPASS
else:
data_folder=os.getcwd()
conn = sqlite3.connect(os.path.join(data_folder,'GI_DICTION4.db'))
cur = conn.cursor()
cur.execute("select Words from Tables2 where Words like ? || '%'", (word,))
allw = cur.fetchall()
return allw
def on_key_release(event):
qword = event.widget.get()
allw = fetch_data(qword)
listbox.delete(0, tk.END)
for w in allw:
listbox.insert(tk.END, w[0])
def on_select(event):
entry.delete(0, tk.END)
entry.insert(0, event.widget.selection_get())
########## GUI DESIGN ##############
【问题讨论】:
标签: sql sqlite user-interface tkinter case-sensitive