青亭浅 2024-05-13 21:57 采纳率: 88.2%
浏览 1
已结题

关于#python#的问题:其中的treeview绑定的双击事件无效

其中的treeview绑定的双击事件无效,不显示任何东西



```python
from tkinter import *
from tkinter import ttk
from tkinter.ttk import Treeview

from test2.db import db


class search(Frame):
    def __init__(self,master):
        super().__init__(master)
        self.table_view=Frame()
        self.table_view.pack()

        self.create_page()

    def create_page(self):
        columns=("name","chinese","math","english")
        columns_values= ("姓名", "语文", "数学", "英语")
        self.tree_view =ttk.Treeview(self,show='headings',columns=columns)
        self.tree_view.column("name",width=80,anchor='center')
        self.tree_view.column("chinese", width=80, anchor='center')
        self.tree_view.column("math", width=80, anchor='center')
        self.tree_view.column("english", width=80, anchor='center')
        self.tree_view.heading('name',text="姓名")
        self.tree_view.heading('chinese',text="语文")
        self.tree_view.heading('math', text="数学")
        self.tree_view.heading('english', text="英语")
        self.tree_view.pack(fill=BOTH,expand=True)
        self.tree_view.bind("Double-Button-1>",self.dssdd)
        self.show_data_frame()

        Button(self,text="刷新数据",command=self.show_data_frame).pack(anchor=E,pady=5)

    def dssdd(self):
        print("dasdsadasd")

    def show_data_frame(self):
        for _ in map(self.tree_view.delete,self.tree_view.get_children('')):
            pass
        students=db.all()
        index=0
        for stu in students:
            print(stu)
            self.tree_view.insert("",index+1,values=(
                stu['name'],stu['math'],stu['chinese'],stu['english']
            ))




  • 写回答

3条回答 默认 最新

  • 关注

    晚上好🌙🌙🌙
    本答案参考ChatGPT-3.5

    问题分析:

    代码中绑定双击事件的代码是:self.tree_view.bind("Double-Button-1>",self.dssdd),应该是绑定错误,正确的应该是self.tree_view.bind("<Double-Button-1>",self.dssdd)

    解决方案:

    1. 更改treeview绑定双击事件的代码:self.tree_view.bind("<Double-Button-1>",self.dssdd)

    2. 确认双击事件绑定成功后,修改展示方法show_data_frame获取到的数据进行展示。

    修改后的代码如下:

    from tkinter import *
    from tkinter import ttk
    from tkinter.ttk import Treeview
    
    from test2.db import db
    
    
    class search(Frame):
        def __init__(self,master):
            super().__init__(master)
            self.table_view=Frame()
            self.table_view.pack()
    
            self.create_page()
    
        def create_page(self):
            columns=("name","chinese","math","english")
            columns_values= ("姓名", "语文", "数学", "英语")
            self.tree_view =ttk.Treeview(self,show='headings',columns=columns)
            self.tree_view.column("name",width=80,anchor='center')
            self.tree_view.column("chinese", width=80, anchor='center')
            self.tree_view.column("math", width=80, anchor='center')
            self.tree_view.column("english", width=80, anchor='center')
            self.tree_view.heading('name',text="姓名")
            self.tree_view.heading('chinese',text="语文")
            self.tree_view.heading('math', text="数学")
            self.tree_view.heading('english', text="英语")
            self.tree_view.pack(fill=BOTH,expand=True)
            self.tree_view.bind("<Double-Button-1>",self.dssdd)
            self.show_data_frame()
    
            Button(self,text="刷新数据",command=self.show_data_frame).pack(anchor=E,pady=5)
    
        def dssdd(self, event):
            item = self.tree_view.selection()[0]
            print(self.tree_view.item(item, "values"))
    
        def show_data_frame(self):
            self.tree_view.delete(*self.tree_view.get_children())
            students=db.all()
            index=0
            for stu in students:
                print(stu)
                self.tree_view.insert("",index+1,values=(
                    stu['name'],stu['math'],stu['chinese'],stu['english']
                ))
    

    修改后,treeview双击事件生效,且能正确展示数据。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月21日
  • 已采纳回答 5月13日
  • 创建了问题 5月13日

悬赏问题

  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 pycharm运行main文件,显示没有conda环境
  • ¥15 易优eyoucms关于二级栏目调用的问题
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
  • ¥15 为什么eclipse不能再下载了?
  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题
  • ¥50 如何将脑的图像投影到颅骨上