tkinter treeview top-level的展开
时间: 2023-07-08 12:52:24 浏览: 53
您可以使用`treeview.item(item, open=True)`方法来展开treeview中的top-level item。其中,item是top-level item的ID。以下是一个示例代码:
``` python
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
# 创建TreeView
treeview = ttk.Treeview(root)
treeview.pack()
# 添加top-level item
item1 = treeview.insert("", "end", text="Item 1")
item2 = treeview.insert("", "end", text="Item 2")
# 展开top-level item
treeview.item(item1, open=True)
treeview.item(item2, open=True)
root.mainloop()
```
该代码将创建一个包含两个top-level item的TreeView,并自动展开这两个item。
相关问题
python tkinter treeview 如何建位新增資料並顯示功能? (要求:點選按鈕後,彈出一個小視窗用來輸入新的資料
要在 tkinter 的 Treeview 中建立新增数据并显示的功能,可以按照以下步骤进行:
1. 首先,需要在 Treeview 中添加新增数据的按钮。可以使用 `ttk.Button` 对象来创建按钮,然后使用 `pack` 或 `grid` 方法将按钮添加到窗口中。
```python
button_add = ttk.Button(root, text="新增数据", command=add_item)
button_add.pack()
```
2. 然后,在 `add_item()` 函数中创建一个小窗口,用来输入新的数据。可以使用 `tkinter.Toplevel` 对象来创建小窗口。
```python
def add_item():
# 创建小窗口
window = tkinter.Toplevel(root)
window.geometry("300x200")
# 在小窗口中添加输入框和确认按钮
label1 = ttk.Label(window, text="数据1:")
entry1 = ttk.Entry(window)
label2 = ttk.Label(window, text="数据2:")
entry2 = ttk.Entry(window)
button_ok = ttk.Button(window, text="确认", command=lambda: save_item(window, entry1.get(), entry2.get()))
# 使用 grid 方法将控件添加到小窗口中
label1.grid(row=0, column=0, padx=5, pady=5, sticky="W")
entry1.grid(row=0, column=1, padx=5, pady=5, sticky="W")
label2.grid(row=1, column=0, padx=5, pady=5, sticky="W")
entry2.grid(row=1, column=1, padx=5, pady=5, sticky="W")
button_ok.grid(row=2, column=1, padx=5, pady=5, sticky="E")
```
3. 在 `save_item()` 函数中,可以获取新的数据并添加到 Treeview 中。
```python
def save_item(window, value1, value2):
# 在 Treeview 中添加新的数据
new_item = treeview.insert("", "end", values=(value1, value2))
# 关闭小窗口
window.destroy()
# 选中新添加的行
treeview.selection_set(new_item)
treeview.focus(new_item)
```
以上就是在 tkinter 中建立新增数据并显示的功能的步骤,可以根据实际需求进行相应的修改和扩展。
python tkinter学生代码
这里提供一个简单的学生管理系统的 tkinter 代码示例,包括添加、删除、编辑学生信息等功能:
```python
import tkinter as tk
from tkinter import ttk
class Student:
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
class StudentManagementSystem:
def __init__(self, master):
self.master = master
self.master.title("学生管理系统")
# 创建表格
self.tree = ttk.Treeview(self.master, columns=("name", "age", "gender"), show="headings")
self.tree.column("name", width=100, anchor="center")
self.tree.column("age", width=100, anchor="center")
self.tree.column("gender", width=100, anchor="center")
self.tree.heading("name", text="姓名")
self.tree.heading("age", text="年龄")
self.tree.heading("gender", text="性别")
self.tree.pack()
# 创建菜单
self.menu = tk.Menu(self.master, tearoff=0)
self.menu.add_command(label="添加学生", command=self.add_student)
self.menu.add_command(label="编辑学生", command=self.edit_student)
self.menu.add_command(label="删除学生", command=self.delete_student)
self.master.bind("<Button-3>", self.popup)
# 添加学生数据
self.students = []
self.students.append(Student("张三", 18, "男"))
self.students.append(Student("李四", 20, "女"))
self.students.append(Student("王五", 19, "男"))
self.update_table()
# 更新表格
def update_table(self):
for i in self.tree.get_children():
self.tree.delete(i)
for student in self.students:
self.tree.insert("", "end", values=(student.name, student.age, student.gender))
# 右键菜单
def popup(self, event):
self.menu.post(event.x_root, event.y_root)
# 添加学生
def add_student(self):
self.add_student_window = tk.Toplevel(self.master)
self.add_student_window.title("添加学生")
tk.Label(self.add_student_window, text="姓名").grid(row=0, column=0)
tk.Label(self.add_student_window, text="年龄").grid(row=1, column=0)
tk.Label(self.add_student_window, text="性别").grid(row=2, column=0)
self.name_entry = tk.Entry(self.add_student_window)
self.age_entry = tk.Entry(self.add_student_window)
self.gender_entry = tk.Entry(self.add_student_window)
self.name_entry.grid(row=0, column=1)
self.age_entry.grid(row=1, column=1)
self.gender_entry.grid(row=2, column=1)
tk.Button(self.add_student_window, text="确定", command=self.add_student_confirm).grid(row=3, column=0, columnspan=2)
def add_student_confirm(self):
name = self.name_entry.get()
age = self.age_entry.get()
gender = self.gender_entry.get()
self.students.append(Student(name, age, gender))
self.update_table()
self.add_student_window.destroy()
# 编辑学生
def edit_student(self):
selected_item = self.tree.selection()[0]
selected_student = self.students[int(selected_item[1:])-1]
self.edit_student_window = tk.Toplevel(self.master)
self.edit_student_window.title("编辑学生")
tk.Label(self.edit_student_window, text="姓名").grid(row=0, column=0)
tk.Label(self.edit_student_window, text="年龄").grid(row=1, column=0)
tk.Label(self.edit_student_window, text="性别").grid(row=2, column=0)
self.name_entry = tk.Entry(self.edit_student_window)
self.age_entry = tk.Entry(self.edit_student_window)
self.gender_entry = tk.Entry(self.edit_student_window)
self.name_entry.insert(0, selected_student.name)
self.age_entry.insert(0, selected_student.age)
self.gender_entry.insert(0, selected_student.gender)
self.name_entry.grid(row=0, column=1)
self.age_entry.grid(row=1, column=1)
self.gender_entry.grid(row=2, column=1)
tk.Button(self.edit_student_window, text="确定", command=self.edit_student_confirm).grid(row=3, column=0, columnspan=2)
def edit_student_confirm(self):
selected_item = self.tree.selection()[0]
selected_student = self.students[int(selected_item[1:])-1]
selected_student.name = self.name_entry.get()
selected_student.age = self.age_entry.get()
selected_student.gender = self.gender_entry.get()
self.update_table()
self.edit_student_window.destroy()
# 删除学生
def delete_student(self):
selected_item = self.tree.selection()[0]
self.students.pop(int(selected_item[1:])-1)
self.update_table()
if __name__ == "__main__":
root = tk.Tk()
app = StudentManagementSystem(root)
root.mainloop()
```
这个例子仅供参考,可以根据自己的需求进行修改和扩展。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)