wxFormBuilder + wxPython 工具开发第四章-日记本工具文章内容增改删以及打包

目录

前言

一、文章新增

二、文章删除

三、文章修改

四、Ctrl+S快捷键的响应

五、增加提示

六、打包exe


前言

上一章讲述对日记本树目录的节点实现增、改、删的功能步骤

链接:wxFormBuilder + Python 工具开发第三章-日记本具树节点增、改、删功能_魂尾ac的博客-CSDN博客

这一章内容

日记本内容的增、改、删,

Ctrl+s按键响应

增、删、改、查相关操作交互提示

打包exe

最终效果:

一、文章新增

新增文章,在三级目录新增时,添加新增代码

步骤1:新增文章代码编写

三级目录新增,是有对话框类NewNode,添加函数add_new_articles,代码如下

def add_new_articles(self, tree_id, name):
        '''
        增加文章数据
        :param tree_id: 树节点id
        :param name: 文章标题
        :return:
        '''
        data = {'tree_id': tree_id, 'name': name}
        sqlt.insert_articles(data)

其中的Indert_articles是在第二章已经写好的数据库文章插入代码,这里也展示如下:

步骤2:代码调用

这段代码应该是在树节点新增成功后面,返回了节点id时,调用所以在类NewNode的函数add_new_node里加上一条代码

self.add_new_articles(new_data['id'], new_data['tree_node'])

步骤3:运行测试

运行代码,右击二级点新增,添加一个’大鱼海堂’,检查数据库articles是否有文章数据新增

数据库表中出现了tree_id为23的大鱼海堂

 文章新增完成

二、文章删除

跟进三级目录删除操作。

其实删除操作不用也罢,因为删除了树节点,文章也跟着见不到了,此处省略三百字

三、文章修改

在编辑框里输入文章内容,点击文件--保存,完成数据存储

步骤1、文章数据缓存

文章内容在前面有一个伏笔,NewWindow类构造函数__init__给了个一个文章的字典对象m_articles,用来缓存文章数据

但在选择到三级节点,展示文章时,忘记将文章数据缓存起来了

所以在最后添中一行代码,将获取到articles_data赋值给m_articles,缓存成功

步骤2:保存文章

在第一章里有各种菜单的响应事件函数,这里要用到’保存’菜单的响应函数

在NewWindow类里,OnSave

在OnSave函数里编写代码,逻辑为获取编辑方案,校验,更新数据,代码如下    

def OnSave(self, event):
        print("保存")
        #获取编辑框的数据
        content = self.m_textEdit.GetValue()
        if content == self.m_articles['content']:
            print('没有更新')
            return '没有更新'
        if content == '':
            print('为空判断,是否要执行')
            return '先不执行'

        #将新内内容更新到缓存中
        self.m_articles['content'] = content

        #更新数据数据
        if sqlt.updata_articles(self.m_articles) is False:
            return '更新失败'

步骤3:运行,测试

去网上搜一些文章‘秋风萧萧’的内容填写到

点击 文件 -保存

进入数据库检查

这个时候,一个初始的日记本工具快完成了,为了完善一些,下面还增加两点内容。

四、Ctrl+S快捷键的响应

Ctrl+S 保存

组合键响应,wxF的Events响应里有wxWindow--wxKeyEnent-

  1. OnChar 功能组合按钮键响应
  2. OnKeyDown 键盘按键按下时响应
  3. OnKeyUp 键盘按键按下弹起时响应

1、OnChar事件创建

步骤1、wxF操作

在wxF里将m_nodetree:wxTreeCtrl 树的OnChar响应函数设置好

在wxF里将m_textEdit:wxTextCtrl编辑框的OnChar响应函数设置好

步骤2、代码复制与覆盖

在Python里找到绑定响应函数的代码

单独copy到template下的noname.py文件中去

在NewWindow.py目录下重写这两个函数


    

def On_tree_key_char(self, event):
        # print('进了On_tree_key_char')
        aa = event.GetKeyCode()
        print(aa)
        event.Skip()
        wx.WXK_LEFT

def On_edit_key_char(self, event):
        event.Skip()

2、Ctrl+s响应

步骤1、确认Ctrl+s组合的code

上图已将树的按钮code获取并打印。

运行代码,点击到树,然后测试各种组合键

比如:ctrl +A、ctrl+B 等

查看打印code

确认Ctrl + s的组合键code 是 19

在newWindow.py导包代码下定义一个枚举(暂且这么说吧)

        

步骤2、Ctrl+s保存开发

很简单的,直接调用到On_Save()即可

    def On_tree_key_char(self, event):
        # print('进了On_tree_key_char')
        if event.GetKeyCode() == KEY_CTRL_S:
            print('进入树Ctrl+s')
            return self.OnSave(None)
        event.Skip()

    def On_edit_key_char(self, event):
        event.Skip()
        if event.GetKeyCode() == KEY_CTRL_S:
            print('进入编辑框Ctrl+s')
            return self.OnSave(None)
        event.Skip()

PS:记住写完相关组合键的响应代码后,还需要将event.Skip()放到最后面,不然很多原生响应都会失效。

步骤3、运行测试

运行runMain.py后,

选择‘秋风萧萧’文章,在里面输入文字,按下Ctrl+s,响应保存成功

继续输入测试文字,然后将焦点移动到树节点上,Ctrl+s,响应保存成功

五、增加提示

在增删除改查中,有一些报错,提示仅在代码中打印,界面没有反应,用户便不知道怎么样了。

需要加入一个提示框,告之用户操作成功,失败的原因等等。

步骤1、添加提示窗口代码

wx里有一个MessageDialog类,给出消息等信息,创建消息框对象,具体编写如下

在NewWindow类中添加pop_message_dlg,   

 def pop_message_dlg(self, msg, title):
        '''
        弹出消息
        :param msg: 消息体
        :param title: 标题
        :return:
        '''

        #创建消息弹出框对象
        popdlg = wx.MessageDialog(None, msg, title, wx.YES_DEFAULT | wx.ICON_QUESTION)

        #展示消息框,有点击OK YES按钮,销毁弹出框
        if popdlg.ShowModal() == wx.ID_YES:
            popdlg.Destroy()

步骤2、调起弹出框

在一些操作异常的代码里添加调起弹框代码

self.pop_message_dlg(‘消息内容’,’标题’)

如下图,在删除树节点操作不成功的地添加调起消息框代码

步骤3、运行测试

在有下级节点的二级节点右击菜单删除,检查弹出提示,如下图

六、打包exe

使用pyinstaller 工具打包工程

步骤1、下载工具命令:

pip install pyinstaller

步骤2、文件目录处理

在sqliteio.py里有获取数据库目录的代码这边要添加一个代码,因为打包后,变成执行文件了,目录也没有两层,仅一层,所以要将获取par_path的代码改成下面这种

import sys

#获取上一层目录的绝对路径

if getattr(sys, 'frozen', False):
    par_path = os.path.dirname(os.path.abspath(sys.executable))
elif __file__:
    par_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

步骤3、打包

要有目录的打包,-D, 不显示dos窗口的打包,-w

打包前一定要关闭360杀毒

打包前一定要关闭360杀毒

打包前一定要关闭360杀毒

在Pycharm的命令窗口Termial,进入到NodeBook目录下

输入命令:

Pyinstaller -D -w runMain.py

打包成功后,目录下会出现新目录与新文件,只有dist目录才是exe运行文件所在位置,所以其他两个新增的可以不用管它

将database目录复制到dist目录下的runMain目录下

双击运行,程序运行成功

日记本流程闭环,代码编写完毕,下一章节即开始编写测试客户端程序的自动化测试工具,敬请期待^^^^^^^

全文代码下载地址:

wxFormBuilder+wxPyton日记本小工具(完整版)-Python文档类资源-CSDN下载

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

魂尾ac

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

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

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

打赏作者

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

抵扣说明:

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

余额充值