首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数据从treeview保存到csv文件tkinter python

问将数据从treeview保存到csv文件tkinter python
EN

Stack Overflow用户
提问于 2020-06-25 16:57:46
回答 1查看 4.2K关注 0票数 0

你好,我用tkinter (Python)编写了一个程序,我在将数据从treeview保存到文件CSV时遇到了问题。我不使用任何sql数据库。只是保存treeview的内容有问题。有没有人知道如何根据我的代码将treeview的内容保存到CSV文件中?

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-25 20:00:56

这里是最小的工作代码,没有重要的函数、变量、模块,但有一些示例数据。

主要元素是

代码语言:javascript
复制
        for row_id in tree.get_children():
            row = tree.item(row_id)['values']
            csvwriter.writerow(row)
代码语言:javascript
复制
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代码样式指南

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62580527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档