python - 使用 python、sqlite3 和 gtk 的独立应用程序的 MVC

标签 python model-view-controller gtk pygtk

我正在开发一个采用 MVC 结构的 pygtk 应用程序。 但我不认为我在实现中遵循标准 MVC 模式。

请建议我必须如何使用 MVC 来解决以下问题。

我在我的应用程序中使用 python、gtk、sqlite3

应用程序的问题陈述:
数据存在于日志文件中。它应该被提取并显示在 GUI 中。 GUI 可以有多个 View (如浏览器选项卡),显示从日志文件中提取的数据(用户可以从同一个数据库表创建多个 View )。用户可以通过 GUI View 过滤/搜索数据。过滤条件可能因 View 而异。

当前使用 MVC 结构的实现:
当前,在 GUI 中,存在一个“创建 View ”按钮,单击该按钮会创建一个 View 来显示提取的数据。 数据从日志文件中提取( Controller 提取数据)并添加到 sqlite 数据库(模型)中。从 sqlite 数据库表中获取数据并将其添加到 gtk.Treemodel 中,该模型将其显示在 gtk.Treeview(View) 中。每次用户单击“创建 View ”时, Controller 都会实例化 View 类并在 GUI 中创建一个新选项卡。

我创建了三个类 Model、View 和 Controller 来实现此目的。 Controller 实例化模型和 View 。该应用程序在运行时实例化 Controller ,该 Controller 一直在等待 GUI 事件(单击“创建 View ”等。使用 gtk 主循环)

我需要一些帮助!
我读过,在 MVC 中,如果模型(数据库)发生变化, View 也会发生变化,反之亦然。是否可以使用 sqlite3 和 gtk.Treeview 实现相同的效果。

简而言之,我的问题是:

  1. 如何在从数据库中提取数据的同时更新我的​​应用程序 GUI?在 MVC 示例中,有一些 Observer 类在模型更改时调用回调函数。我怎样才能为上述问题陈述写出相同的内容?
  2. 我是否可以将 sqlite3 数据库设置为 gtk.Treeview 的树模型,以便如果将任何行插入到数据库表中,它会在 TreeView 中更新?
  3. 是否有任何使用 MVC 架构并使用 python、gtk、sqlite 构建的示例?

最佳答案

这就是我最终在我的应用程序中实现的!如果有更好的方法,请告诉我。

我已经使用 gtk.GenericTreeModel 在 gtk.Treeview 中显示来自 sqlite 数据库的数据。

当用户点击“点击查看”时,sqlite View 被创建并连接到 gtk.GenericTreeModel 以便在 gtk.Treeview(GUI) 中显示数据。

如果在创建 sqlite View 后将数据添加到数据库,为了更新 gtk.Treeview,我们需要发出“row-inserted”信号。

项目conduit来自 github 的示例将 sqlite 连接到 gtk 通用树模型。

希望这对您有所帮助!

关于python - 使用 python、sqlite3 和 gtk 的独立应用程序的 MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31589708/

相关文章:

python - 提交表单后,Django 使用正确的 URL 重定向到索引 View

python - Jupyter 笔记本信号仅在主线程中有效

python - 使用 Stem 对带有 Tor 子进程的 Controller 进行身份验证

extjs - 从另一个商店访问一个商店 - Sencha Touch

python - 如何在 Tkinter 中实现 MVC 模式

python - 如何使用 Python 和 GTK 创建具有自定义文本和透明背景的状态图标/系统托盘图标?

ubuntu - GtkDialog 映射时没有 transient 父级。这是不鼓励的,Katalon Studio Linux (Beta GUI) 出现错误

python - TypeError: 'list' 对象不能被解释为整数

javascript - Marionette.js 与 Chaplin.js 的比较

c - 如何在杂乱纹理上放置杂乱 Actor ?