use*_*788 7 python gtk model-view-controller pygtk
我正在开发一个pygtk应用程序,我采用了MVC结构.但我不认为我在实现中遵循标准的MVC模式.
请建议我如何使用MVC来解决以下问题陈述.
我在我的应用程序中使用python,gtk,sqlite3
应用程序的问题陈述:
数据存在于日志文件中.它应该被提取并显示在GUI中.GUI可以有多个视图(如浏览器选项卡),显示从日志文件中提取的数据(用户可以从同一个数据库表创建多个视图).用户可以通过GUI视图过滤/搜索数据.过滤条件可能因视图而异.
使用MVC结构的当前实现:
当前,在GUI中,存在按钮"创建视图",其在点击时创建视图以显示提取的数据.从日志文件中提取数据(Controller提取数据)并将其添加到sqlite数据库(Model).获取sqlite数据库表中的数据并将其添加到gtk.Treemodel中,该gtk.Treemodel在gtk.Treeview(View)中显示它.每次用户单击"创建视图"时,Controller都会实例化View类并在GUI中创建新选项卡.
我创建了三个类Model,View和Controller来实现这一目标.Controller实例化Model和View.应用程序在运行时,实例化继续等待GUI事件的Controller(单击"Create View"等...使用gtk主循环)
在这里,我需要一些帮助!
我已经读过,在MVC中,如果模型(数据库)被更改,视图也会被更改,反之亦然.是否可以使用sqlite3和gtk.Treeview实现相同的目标.
简而言之,我的问题是:
这就是我最终在我的应用程序中实现的!如果有更好的方法,请告诉我。
我使用 gtk.GenericTreeModel 在 gtk.Treeview 中显示来自 sqlite 数据库的数据。
当用户单击“Click View”时,将创建sqlite 视图并将其连接到 gtk.GenericTreeModel,以便在 gtk.Treeview(GUI) 中显示数据。
如果在创建 sqlite 视图后将数据添加到数据库中,为了更新 gtk.Treeview,我们需要发出“行插入”信号。
来自 github 的项目管道有一个将 sqlite 连接到 gtk 通用树模型的示例。
希望这可以帮助!