Python 在tkinter列表小部件中列出数据并隐藏主索引,但仍将其用于
我已经创建了一个sqlite3数据库:Python 在tkinter列表小部件中列出数据并隐藏主索引,但仍将其用于,python,sqlite,tkinter,Python,Sqlite,Tkinter,我已经创建了一个sqlite3数据库: def connect(): conn=sqlite3.connect("todo.db") cur=conn.cursor() cur.execute("CREATE TABLE IF NOT EXISTS todo (id INTEGER PRIMARY KEY, tasks TEXT, typ TEXT, difficulty TEXT, frequency TEXT, deadline TEXT
def connect():
conn=sqlite3.connect("todo.db")
cur=conn.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS todo (id INTEGER PRIMARY KEY, tasks TEXT, typ TEXT, difficulty TEXT, frequency TEXT, deadline TEXT)")
conn.commit()
conn.close()
我从中获取数据:
def view():
conn=sqlite3.connect("todo.db")
cur=conn.cursor()
cur.execute("SELECT * FROM todo")
rows=cur.fetchall()
conn.close()
return rows
并在tkinter列表小部件中显示它们:
def view_command():
list1.delete(0,END)
for row in tdo.view():
row = str(row).strip("()")
row = row.replace("'","")
row = row.strip()
list1.insert(END,row)
它按预期显示行的所有元素:
12,完成某事,待办事项,困难,经常,12.08.2020
现在我要做的是在列表中显示这一行,不带索引:
完成某事,待办事项,困难,经常,2020年8月12日
为此,我没有从数据库中选择id,并尝试使用strip和类似函数将其排除在外。但随后身份证就丢失了。我希望能够通过id选择行以进一步使用它
def get_selected_row(event):
try:
global selected_tuple
index=list1.curselection()[0]
selected_tuple=list1.get(index)
selected_tuple = tuple(selected_tuple.split (","))
因此,简而言之,我如何从数据库中获取索引,在列表小部件中隐藏索引,但在选择它时仍然能够使用它?您可以创建一个映射文件,将列表框索引映射到数据库id 以下示例假定数据库id是行的第一个元素
def view_command():
list1.mapping = []
list1.delete(0,END)
for row in tdo.view():
db_id = row.pop(0)
list1.mapping.append(db_id)
row = str(row).strip("()")
row = row.replace("'","")
row = row.strip()
list1.insert(END,row)
现在,从列表框中给定索引x
,数据库id将是list1.mapping[x]
与其将列表转换为字符串,然后删除转换过程中添加的字符,不如用逗号和空格连接列表 例如:
row = ", ".join(row)
你厌倦了对数据库中的数据进行切片了吗?