用Tkinter打造GUI开发工具(24)Tree树控件

106 篇文章 116 订阅
104 篇文章 107 订阅

用Tkinter打造GUI开发工具(24)Tree树控件


采用Python自带Tkinter库开发GUI软件,学习负担为零,因此受到很多朋友喜爱。但是原始的Tkinter库控件比较简单,但是它为我们提供可以扩展新控件的空间。
前面课程,我为大家介绍了如何实现ttk.Notebook,使控制卡Tab放到下面。见下图。
在这里插入图片描述
用Tkinter打造GUI开发工具(19)ttk.Notebook笔记本小部件
https://blog.csdn.net/hepu8/article/details/90345072

在本节我为大家介绍新控件,Tree树控件。
原始的树控件是这样的
在这里插入图片描述
使用比较复杂,我们设计了一个新树控件Tree,使用也比较简单。
我们设计了HP_tk.py模块,导入这个模块就能使用。

import tkinter as tk
from tkinter import ttk
import HP_tk as htk

root=htk.MainWindow(title='tkinter主窗口',x=0,y=0,w=600, h=600,picture='',zoom=True,center=True)

students = {"窗口":{"windows":['窗口容器。','','',''],\
                  "Toplevel":['用来创建子窗口窗口组件。','','',''],\
                  "PanedWindow":['空间管理组件。','','','']}, \
            "容器":{"Frame":['框架组件。','','',''],\
                  "LabelFrame":['标签框架。','','',''],\
                  "Notebook":['笔记本组件。','','','']}, \
            "组件":{"Label":['标签。','','',''],\
                  "Button":['按钮。','','',''],\
                  "Entry":['单行文本框。','','',''],\
                  "Checkbutton":['复选框。','','',''],\
                  "Radiobutton":['单选框。','','',''],\
                  "Listbox":['列表框。','','',''],\
                  "Canvas":['画板组件','','',''],\
                  "Scale":['滑块组件。','','',''],\
                  "Scrollbar":['滚动条。','','',''],\
                  "Text":['多行文本框。','','','']}, \
            "菜单":{"Menu":['菜单。','','',''],\
                  "Menubutton":['按钮菜单。','','','']}, \
            "ttk组件":{"LabelFrame":['标签框架。','','',''],\
                     "Notebook":['笔记本组件。','','',''],\
                     "Treeview":['Treeview','','','']},\
            "对话窗":{"messagebox":['messagebox','','',''],\
                          "askokcance":['askokcance','','',''],\
                          "showinfo":['','','',''],\
                          "showwarning":['','','',''],\
                          "showerror":['','','',''], \
                          "askquestion":['','','',''], \
                          "askyesno":['','','',''], \
                          "askyesnocancel":['','','','']}, \
            "文件对话窗":{"filedialog":['','','',''],\
                     "askdirectory":['','','',''],\
                     "askopenfile":['','','',''],\
                     "askopenfiles":['','','',''], \
                     "askopenfilename":['','','',''], \
                     "askopenfilenames":['','','',''], \
                     "asksaveasfile":['','','',''], \
                     "asksaveasfilename":['','','','']}, \
            "简单对话窗":{"simpledialog":['','','',''],\
                     "askinteger":['','','',''],\
                     "askfloat":['','','',''], \
                     "askstring(title":['','','',''], \
                     "showwarning":['','','','']}}

tree=htk.Tree(root)
tree.load_dict(students )
tree.pack(expand = 1, fill = tk.BOTH)

root.mainloop()   #开启tk主循环

程序运行结果如下:
在这里插入图片描述
Tkinter.tix的文件目录列表是这样的。
在这里插入图片描述
也不好看,我们也可以使用Tree树控件。

import tkinter as tk
from tkinter import ttk
import HP_tk as htk

root=htk.MainWindow(title='tkinter主窗口',x=0,y=0,w=600, h=600,picture='',zoom=True,center=True)

path='/xb3/guide'
tree=htk.Tree(root)
tree.load_path(path)
tree.pack(expand = 1, fill = tk.BOTH)

root.mainloop()   #开启tk主循环

程序运行结果如下:
在这里插入图片描述
HP_tk.py是小白量化提供的模块之一。完整代码见《零基础搭建量化投资系统――以Python为工具》一书提供的完整示例。
该书在京东、淘宝、当当网上销售,欢迎大家订购正版书。

#购买<零基础搭建量化投资系统>正版书,送小白量化软件源代码。
#独狼荷蒲qq:2775205
#通通小白python量化群:524949939
#电话微信:18578755056
#微信公众号:独狼股票分析

其他QQ群:
PythonTkinterGUI : 517029284
Python学习交流: 647866213

  • 1
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,Python学生管理系统tkinter版的开发可以分为以下几个步骤: 1. 设计界面:使用tkinter模块创建窗口和各种控件,包括标签、文本框、按钮等。 2. 编写功能:实现数据的增删改查功能,包括添加学生信息、删除学生信息、修改学生信息和查询学生信息。 3. 数据存储:将学生信息存储在文件或数据库中,以便程序下次启动时可以读取。 以下是一个简单的Python学生管理系统tkinter版的示例代码: ```python import tkinter as tk from tkinter import ttk import csv class StudentManagementSystem: def __init__(self, window): self.window = window self.window.title("学生管理系统") # 创建标签 tk.Label(self.window, text="姓名").grid(row=0, column=0) tk.Label(self.window, text="性别").grid(row=1, column=0) tk.Label(self.window, text="年龄").grid(row=2, column=0) tk.Label(self.window, text="成绩").grid(row=3, column=0) # 创建文本框 self.name_entry = tk.Entry(self.window) self.name_entry.grid(row=0, column=1) self.gender_entry = tk.Entry(self.window) self.gender_entry.grid(row=1, column=1) self.age_entry = tk.Entry(self.window) self.age_entry.grid(row=2, column=1) self.grade_entry = tk.Entry(self.window) self.grade_entry.grid(row=3, column=1) # 创建按钮 ttk.Button(self.window, text="添加", command=self.add_student).grid(row=4, column=0) ttk.Button(self.window, text="删除", command=self.delete_student).grid(row=4, column=1) ttk.Button(self.window, text="修改", command=self.edit_student).grid(row=4, column=2) ttk.Button(self.window, text="查询", command=self.search_student).grid(row=4, column=3) # 创建表格 self.tree = ttk.Treeview(self.window, columns=("姓名", "性别", "年龄", "成绩")) self.tree.grid(row=5, column=0, columnspan=4) self.tree.heading("#0", text="ID") self.tree.heading("#1", text="姓名") self.tree.heading("#2", text="性别") self.tree.heading("#3", text="年龄") self.tree.heading("#4", text="成绩") # 加载数据 self.load_data() def add_student(self): # 获取文本框中的内容 name = self.name_entry.get() gender = self.gender_entry.get() age = self.age_entry.get() grade = self.grade_entry.get() # 将学生信息添加到表格中 self.tree.insert("", "end", values=(name, gender, age, grade)) # 将学生信息保存到文件中 with open("students.csv", "a", newline="") as csvfile: writer = csv.writer(csvfile) writer.writerow([name, gender, age, grade]) # 清空文本框 self.name_entry.delete(0, "end") self.gender_entry.delete(0, "end") self.age_entry.delete(0, "end") self.grade_entry.delete(0, "end") def delete_student(self): # 获取选中的学生的ID selected_item = self.tree.selection()[0] student_id = self.tree.item(selected_item)["text"] # 从表格中删除学生信息 self.tree.delete(selected_item) # 从文件中删除学生信息 with open("students.csv", "r") as csvfile: reader = csv.reader(csvfile) rows = [row for row in reader if row[0] != student_id] with open("students.csv", "w", newline="") as csvfile: writer = csv.writer(csvfile) writer.writerows(rows) def edit_student(self): # 获取选中的学生的ID selected_item = self.tree.selection()[0] student_id = self.tree.item(selected_item)["text"] # 获取文本框中的内容 name = self.name_entry.get() gender = self.gender_entry.get() age = self.age_entry.get() grade = self.grade_entry.get() # 更新表格中的学生信息 self.tree.item(selected_item, values=(name, gender, age, grade)) # 更新文件中的学生信息 with open("students.csv", "r") as csvfile: reader = csv.reader(csvfile) rows = [row if row[0] != student_id else [student_id, name, gender, age, grade] for row in reader] with open("students.csv", "w", newline="") as csvfile: writer = csv.writer(csvfile) writer.writerows(rows) def search_student(self): # 获取文本框中的内容 name = self.name_entry.get() gender = self.gender_entry.get() age = self.age_entry.get() grade = self.grade_entry.get() # 清空表格 for row in self.tree.get_children(): self.tree.delete(row) # 加载符合条件的学生信息 with open("students.csv", "r") as csvfile: reader = csv.reader(csvfile) for row in reader: if not(name and name != row[1]): if not(gender and gender != row[2]): if not(age and age != row[3]): if not(grade and grade != row[4]): self.tree.insert("", "end", text=row[0], values=row[1:]) def load_data(self): # 清空表格 for row in self.tree.get_children(): self.tree.delete(row) # 加载学生信息 with open("students.csv", "r") as csvfile: reader = csv.reader(csvfile) for row in reader: self.tree.insert("", "end", text=row[0], values=row[1:]) # 创建窗口并运行程序 window = tk.Tk() app = StudentManagementSystem(window) window.mainloop() ``` 在这个示例中,我们使用了tkinter模块创建了一个窗口和各种控件,并实现了学生信息的增删改查功能。学生信息保存在CSV文件中,每行记录包含学生的姓名、性别、年龄和成绩。通过这个示例,你可以学习到如何使用tkinter模块开发GUI应用程序和如何处理文件读写等操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荷蒲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值