你好,我用tkinter (Python)编写了一个程序,我在将数据从treeview保存到文件CSV时遇到了问题。我不使用任何sql数据库。只是保存treeview的内容有问题。有没有人知道如何根据我的代码将treeview的内容保存到CSV文件中?
from tkinter import *
from tkinter import ttk
from tkinter.filedialog import asksaveasfile
from tkinter.filedialog import askopenfile
from tkcalendar import Calendar,DateEntry
import csv
from tkinter.messagebox import showinfo,askquestion
root = Tk()
root.title("Medicine database")
one = StringVar()
two = StringVar()
three = StringVar()
four = StringVar()
def quit():
MsgBox = askquestion('Exit Application','Are you sure you want to exit the application',icon = 'warning')
if MsgBox == 'yes':
root.destroy()
def save():
with open("new.csv","w",newline='') as f:
w=csv.writer(f, delimiter='\t')
w.writerow(tree.get_children())
showinfo("Save to CSV file","File was saved")
def add_medicine():
row = tree.insert("",END,values=(e0.get(),e1.get(),e2.get(),cal1.get()))
e0.delete(0,END)
e1.delete(0,END)
e2.delete(0,END)
def select(event):
try:
cursor = tree.focus()
content = tree.item(cursor)
row = content["values"]
one.set(row[0])
two.set(row[1])
three.set(row[2])
except IndexError:
pass
def delete_all():
for i in tree.get_children():
tree.delete(i)
def edit():
try:
x = tree.selection()[0]
for item in x:
tree.item(x,values=(e0.get(),e1.get(),e2.get(),cal1.get()))
except IndexError:
pass
def remove_item():
selected_items = tree.selection()[0]
tree.delete(selected_items)
def open_CSV():
with open("new.csv") as myfile:
csvread = csv.reader(myfile,delimiter=",")
for i in csvread:
print(i)
tree = ttk.Treeview(root,height=25,selectmode=EXTENDED)
tree["columns"]=("one","two","three","four")
tree.column("one",width=120)
tree.column("two",width=160)
tree.column("three",width=130)
tree.column("four",width=160)
tree.heading("one", text="Numer seryjny leku")
tree.heading("two", text="Nazwa Leku")
tree.heading("three", text="Ilość ampułek")
tree.heading("four",text="Data ważności")
tree["show"]="headings"
root.mainloop()发布于 2020-06-25 20:00:56
这里是最小的工作代码,没有重要的函数、变量、模块,但有一些示例数据。
主要元素是
for row_id in tree.get_children():
row = tree.item(row_id)['values']
csvwriter.writerow(row)import tkinter as tk # PEP8: `import *` is not preferred
from tkinter import ttk
import csv
# --- functions ----
def load_csv():
with open("new.csv") as myfile:
csvread = csv.reader(myfile, delimiter=',')
for row in csvread:
print('load row:', row)
tree.insert("", 'end', values=row)
def save_csv():
with open("new.csv", "w", newline='') as myfile:
csvwriter = csv.writer(myfile, delimiter=',')
for row_id in tree.get_children():
row = tree.item(row_id)['values']
print('save row:', row)
csvwriter.writerow(row)
# --- main ---
root = tk.Tk()
tree = ttk.Treeview(root, height=25, selectmode='extended')
tree.pack()
tree["columns"] = ("one", "two", "three", "four")
tree.column("one", width=120)
tree.column("two", width=160)
tree.column("three", width=130)
tree.column("four", width=160)
tree.heading("one", text="Numer seryjny leku")
tree.heading("two", text="Nazwa Leku")
tree.heading("three", text="Ilość ampułek")
tree.heading("four", text="Data ważności")
tree["show"] = "headings"
button_load = tk.Button(root, text='Load', command=load_csv)
button_load.pack()
button_save = tk.Button(root, text='Save', command=save_csv)
button_save.pack()
# add some data for test
tree.insert("", 'end', values=[1, "A", "B", "C"])
tree.insert("", 'end', values=[2, "X", "Y", "Z"])
root.mainloop()BTW:参见PEP 8 -- Python代码样式指南
https://stackoverflow.com/questions/62580527
复制相似问题