wxpython设计GUI:实现删除grid控件某一行的功能

本文介绍如何使用wxPython构建的提单管理系统中,实现单号撤销功能,强调了仅限本人创建、流程状态为'编辑中'的单号删除操作。通过Grid控件结合鼠标右键和Ctrl键触发事件,删除后弹出确认提示并同步数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:使用wxpython搭建单号管理系统,使用grid控件实现单号信息的显示,单号管理系统又称为提单系统,为提单系统增加单号撤销功能。

单号撤销功能的功能说明如下:

功能限制:只能撤销你本人创建的单号,并且该单号处于刚创建还没下发给下一步执行人的状态,即单号的流程状态显示“编辑中”,才可以撤销该单号。

功能操作:选中单号显示表格的某一行,同时按下电脑键盘的“Ctrl”键并且单击鼠标右键,即可实现从提单系统中删除该单号数据的功能。

操作效果:操作完成后等待几秒钟,会弹出如下确认信息提示框,提示用户单号已删除,提醒用户点击“刷新”按钮,同步提单系统最新的数据。

参考文章:wxPython in Action ( 网格(grid)控件7)

在这里插入图片描述

选择grid的wx.grid.EVT_GRID_LABEL_RIGHT_CLICK当用户在行或列的标签区域敲击鼠标右键时触发该事件。

        # 当用户在行或列的标签区域敲击鼠标右键时触发该事件
        self.Bind(wx.grid.EVT_GRID_LABEL_RIGHT_CLICK, self.cancel_id_operation_1, self.m_grid1)

在这里插入图片描述

wx.grid.GridEvent方法选择ControlDown():当事件被触发时,如果control键被按下了,则返回True。按下电脑键盘的“Ctrl”键即为control键被按下事件触发。

    def cancel_id_operation_1(self, event):
        # 只能控制删除一行的数据
        row = event.GetRow()
        if event.ControlDown():
            # 当事件被触发时,如果control键被按下了,则返回True。
            # 判断是否满足删除条件,项目状态或者流程状态是编辑中的ID才能删除
            # 判断身份
            # 获取当前的执行权限
            user = read_ini("Frame")["user"]
            create_person_idx = bill_view_list.index("创建人")
            create_person = self.m_grid1.GetCellValue(row, create_person_idx)
            if user == create_person:
                project_idx = bill_view_list.index("项目状态")
                flow_idx = bill_view_list.index("流程状态")
                if (self.m_grid1.GetCellValue(row, project_idx) == "编辑中") or \
                        (self.m_grid1.GetCellValue(row, flow_idx) == "编辑中"):
                    id_idx = bill_view_list.index("单号")
                    id = self.m_grid1.GetCellValue(row, id_idx)
                    self.cancel_id(id)
                else:
                    toastone = wx.MessageDialog(None, "项目状态或者流程状态处于'编辑中'的单号信息才能删除", "错误信息提示",
                                                wx.YES_DEFAULT | wx.ICON_QUESTION)
                    if toastone.ShowModal() == wx.ID_YES:  # 如果点击了提示框的确定按钮
                        toastone.Destroy()  # 则关闭提示框
            else:
                toastone = wx.MessageDialog(None, "禁止删除非本人创建的单号!!!", "错误信息提示",
                                            wx.YES_DEFAULT | wx.ICON_QUESTION)
                if toastone.ShowModal() == wx.ID_YES:  # 如果点击了提示框的确定按钮
                    toastone.Destroy()  # 则关闭提示框
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

草莓仙生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值