问题描述
我正在tkinter(ttk)中创建一个sqlite3 GUI界面,但是我陷入了一半。请参见下面的代码
import sqlite3
from tkinter import ttk
import tkinter as tk
root = tk.Tk()
conn = sqlite3.connect('contact.sqlite3')
conn_cursor = conn.cursor()
res = conn.execute("SELECT name FROM sqlite_master WHERE type='table';")
tables = tuple([tbl_name[0] for tbl_name in res])
table_chooser = ttk.ComboBox(root)
table_chooser['values'] = tables
table_chooser.grid(row=0,column=0)
def view_table():
selected_table = 'contacts' #table_chooser.get()
table_names = conn.execute(f'''SELECT * FROM pragma_table_info('%{selected_table}%')''')
column_header = [nam[1] for nam in table_names]
stringvar_header = [tk.StringVar() for _ in column_header]
alldb = conn.execute(f'''SELECT * FROM {selected_table} ''').fetchall()
stringvar = [[tk.StringVar() for _ in alldb[0]] for _ in alldb]
def header_entry(i):
stringvar_header[i].set(column_header[i])
return ttk.Entry(root,textvariable=stringvar_header[i],state="disabled").grid(row=1,column=i)
def create_entry(i,j):
stringvar[i][j].set(alldb[i][j])
return ttk.Entry(root,textvariable=stringvar[i][j]).grid(row=i+2,column=j)
h_entry = [header_entry(i) for i in range(len(column_header))]
entry = [[create_entry(i,j) for j in range(len(alldb[0]))] for i in range(len(alldb))]
view_table()
#ttk.Button(root,text="view",command=view_table).grid(row=0,column=2)
root.mainloop()
问题是,如果我们运行下面的代码,我们只能看到Entry小部件的空白单元格,但是如果我们直接在代码中编写view_table()函数的内容(即不使用function),则可以正常工作 并且您可以看到表“联系人”的所有内容。在条目小部件中。 那么使用功能和不使用功能时会发生什么
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)