将数据从树视图保存到 csv 文件 tkinter python [英] Saving datas from treeview to csv file tkinter python

查看:60
本文介绍了将数据从树视图保存到 csv 文件 tkinter python的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Hello I wrote a program in tkinter (Python) and I have a problem with saving datas from treeview to file CSV. I dont use any sql database. Just problem with saving content of treeview. Does anybody please have any idea how to save content of treeview to CSV file according to my code?

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()

推荐答案

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

Here is minimal working code without not important functions, variables, modules but with some example data at start.

主要元素是

        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()


顺便说一句:请参阅 PEP 8 -- 样式指南用于 Python 代码

这篇关于将数据从树视图保存到 csv 文件 tkinter python的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆