将SQL表插入树中

时间:2016-03-30 08:24:30

标签: python sql tkinter tree listbox

我设法完成了一段代码,大部分代码完成了我想要它做的事情,除了原始代码使用列表将数据插入树中。我希望从SQL表中调用要插入的数据并输出到正确的列中。到目前为止,我的编码看起来像这样:

UIImageView

我遇到的主要问题是在运行编码时没有定义import tkinter as tk import tkinter.font as tkFont import tkinter.ttk as ttk import sqlite3 class MultiColumnListbox(object): """use a ttk.TreeView as a multicolumn ListBox""" def __init__(self): self.tree = None self._setup_widgets() self._build_tree() def _setup_widgets(self): s = """\click on header to sort by that column to change width of column drag boundary """ msg = ttk.Label(wraplength="4i", justify="left", anchor="n", padding=(10, 2, 10, 6), text=s) msg.pack(fill='x') container = ttk.Frame() container.pack(fill='both', expand=True) # create a treeview with dual scrollbars self.tree = ttk.Treeview(columns=getvariablesC, show="headings") vsb = ttk.Scrollbar(orient="vertical", command=self.tree.yview) hsb = ttk.Scrollbar(orient="horizontal", command=self.tree.xview) self.tree.configure(yscrollcommand=vsb.set, xscrollcommand=hsb.set) self.tree.grid(column=0, row=0, sticky='nsew', in_=container) vsb.grid(column=1, row=0, sticky='ns', in_=container) hsb.grid(column=0, row=1, sticky='ew', in_=container) container.grid_columnconfigure(0, weight=1) container.grid_rowconfigure(0, weight=1) def _build_tree(self): for col in getvariablesC: self.tree.heading(col, text=col.title(), command=lambda c=col: sortby(self.tree, c, 0)) # adjust the column's width to the header string self.tree.column(col, width=tkFont.Font().measure(col.title())) def sqlcode(): db = sqlite3.connect('File') cursor = db.cursor() sql1="Select * FROM ProductTable" cursor.execute(sql1) result = cursor.fetchall() count = (len(result)) for item in result: self.tree.insert('', 'end', values=item) # adjust column's width if necessary to fit each value for ix, val in enumerate(item): col_w = tkFont.Font().measure(val) if self.tree.column(getvariablesC[ix],width=None)<col_w: self.tree.column(getvariablesC[ix], width=col_w) cursor.close() sqlcode() getvariablesC= ["CustomerID","Title","Name","Address1","Address2","Town","County","PostCode","STDCode","HomeNo","MobileNo","Email","Source","Month","Year"] if __name__ == '__main__': root = tk.Tk() root.title("Multicolumn Treeview/Listbox") listbox = MultiColumnListbox() root.mainloop() ,但我不确定导致错误的原因是什么:

self

1 个答案:

答案 0 :(得分:2)

您在函数定义中缺少self。你应该改变:

def sqlcode():

def sqlcode(self):