如何在GUI界面利用文件对话框指定要读取的csv文件,完成movie.csv文件数据读取从读取的电影信息中选择几个字段(列)的信息显示在界面
时间: 2024-03-27 16:37:14 浏览: 133
你可以使用 Python 自带的 `filedialog` 模块或者 Tkinter 的 `filedialog` 模块来实现在 GUI 界面中利用文件对话框指定要读取的 csv 文件的功能,例如以下代码:
```python
from tkinter import *
from tkinter.ttk import *
from tkinter.filedialog import askopenfilename
import csv
# 创建 Tkinter 窗口
root = Tk()
root.title("Movie Information")
# 创建 Treeview 组件
tree = Treeview(root)
tree.pack()
# 定义 Treeview 列名和列宽
tree["columns"] = ("rank", "title", "score", "movie_type", "release_year")
tree.column("#0", width=0, stretch=NO)
tree.column("rank", width=60)
tree.column("title", width=200)
tree.column("score", width=60)
tree.column("movie_type", width=100)
tree.column("release_year", width=100)
# 设置 Treeview 列名
tree.heading("rank", text="Rank")
tree.heading("title", text="Title")
tree.heading("score", text="Score")
tree.heading("movie_type", text="Movie Type")
tree.heading("release_year", text="Release Year")
# 定义打开 csv 文件的函数
def open_file():
# 利用文件对话框选择要读取的 csv 文件
filename = askopenfilename(filetypes=[("CSV Files", "*.csv")])
# 如果用户选择了文件,开始读取
if filename != "":
# 清空 Treeview 的数据
tree.delete(*tree.get_children())
# 读取 csv 文件
with open(filename, newline="", encoding="utf-8") as csvfile:
# 创建 csv 读取器
reader = csv.reader(csvfile)
# 跳过第一行(列名)
next(reader)
# 逐行读取数据并插入到 Treeview 中
for row in reader:
rank, title, score, movie_type, release_year = row[0], row[1], row[2], row[3], row[4]
tree.insert("", "end", text="", values=(rank, title, score, movie_type, release_year))
# 创建打开文件按钮
open_button = Button(root, text="Open File", command=open_file)
open_button.pack()
# 进入 Tkinter 主循环
root.mainloop()
```
在上面的代码中,我们使用了 `filedialog` 模块的 `askopenfilename` 方法来打开文件对话框,让用户选择要读取的 csv 文件。然后,我们使用 `csv` 模块的 `reader` 方法来读取 csv 文件的内容,并将读取到的数据插入到 `Treeview` 组件中。你可以根据需要修改代码,选择你想要显示的列。
阅读全文