使用 python、sqlite3 和 gtk 的独立应用程序的 MVC
MVC for standalone application using python, sqlite3 and gtk
我正在开发一个采用 MVC 结构的 pygtk 应用程序。
但我不认为我在实现中遵循标准 MVC 模式。
请建议我必须如何使用 MVC 来解决以下问题陈述。
我在我的应用程序中使用 python、gtk、sqlite3
应用程序的问题陈述:
数据存在于日志文件中。它应该被提取并显示在 GUI 中。 GUI 可以有多个视图(如浏览器选项卡),显示从日志文件中提取的数据(用户可以从同一数据库创建多个视图 table)。用户可以通过 GUI 视图 filter/search 数据。过滤条件可能因视图而异。
当前使用 MVC 结构的实现:
当前,在 GUI 中,存在一个按钮 "Create View",单击该按钮会创建一个视图来显示提取的数据。
数据从日志文件中提取(控制器提取数据)并添加到 sqlite 数据库(模型)中。来自 sqlite 数据库 table 的数据被提取并添加到 gtk.Treemodel 并显示在 gtk.Treeview(视图)中。每次用户单击 "Create View",控制器实例化视图 class 并在 GUI 中创建一个新选项卡。
我创建了三个 classes 模型、视图和控制器来实现此目的。控制器实例化模型和视图。该应用程序在 运行 时实例化控制器,该控制器一直在等待 GUI 事件(单击 "Create View" 等。使用 gtk 主循环)
我需要一些帮助!
我读过,在 MVC 中,如果模型(数据库)发生变化,视图也会发生变化,反之亦然。是否可以使用 sqlite3 和 gtk.Treeview 实现相同的效果。
简而言之,我的问题是:
- 如何在从数据库中提取数据的同时更新我的应用程序 GUI?在 MVC 示例中,有 Observer classes,它在模型更改时调用回调函数。我怎样才能为上面的问题陈述写同样的东西?
- 我是否可以将 sqlite3 数据库设置为 gtk.Treeview 的树模型,以便如果将任何行插入数据库 table,它会在树视图中更新?
- 是否有任何使用 MVC 架构并使用 python、gtk、sqlite 构建的示例?
不知道有没有现成的例子;你所描述的内容听起来非常符合你的问题。
但是,您可以使用 Gda
库作为 Gtk.TreeModel
.
连接到您的 sqlite 数据库
这就是我最终在我的应用程序中实现的!如果有更好的方法,请告诉我。
我已经使用 gtk.GenericTreeModel 在 gtk.Treeview 中显示来自 sqlite 数据库的数据。
当用户点击 'Click View' 时,sqlite 视图 被创建并连接到 gtk.GenericTreeModel 以便在 gtk.Treeview 中显示数据(图形用户界面)。
如果在创建 sqlite 视图后将数据添加到数据库,为了更新 gtk.Treeview,我们需要发出信号 "row-inserted."
来自 github 的项目 conduit 有一个将 sqlite 连接到 gtk 通用树模型的示例。
希望对您有所帮助!
我正在开发一个采用 MVC 结构的 pygtk 应用程序。 但我不认为我在实现中遵循标准 MVC 模式。
请建议我必须如何使用 MVC 来解决以下问题陈述。
我在我的应用程序中使用 python、gtk、sqlite3
应用程序的问题陈述:
数据存在于日志文件中。它应该被提取并显示在 GUI 中。 GUI 可以有多个视图(如浏览器选项卡),显示从日志文件中提取的数据(用户可以从同一数据库创建多个视图 table)。用户可以通过 GUI 视图 filter/search 数据。过滤条件可能因视图而异。
当前使用 MVC 结构的实现:
当前,在 GUI 中,存在一个按钮 "Create View",单击该按钮会创建一个视图来显示提取的数据。
数据从日志文件中提取(控制器提取数据)并添加到 sqlite 数据库(模型)中。来自 sqlite 数据库 table 的数据被提取并添加到 gtk.Treemodel 并显示在 gtk.Treeview(视图)中。每次用户单击 "Create View",控制器实例化视图 class 并在 GUI 中创建一个新选项卡。
我创建了三个 classes 模型、视图和控制器来实现此目的。控制器实例化模型和视图。该应用程序在 运行 时实例化控制器,该控制器一直在等待 GUI 事件(单击 "Create View" 等。使用 gtk 主循环)
我需要一些帮助!
我读过,在 MVC 中,如果模型(数据库)发生变化,视图也会发生变化,反之亦然。是否可以使用 sqlite3 和 gtk.Treeview 实现相同的效果。
简而言之,我的问题是:
- 如何在从数据库中提取数据的同时更新我的应用程序 GUI?在 MVC 示例中,有 Observer classes,它在模型更改时调用回调函数。我怎样才能为上面的问题陈述写同样的东西?
- 我是否可以将 sqlite3 数据库设置为 gtk.Treeview 的树模型,以便如果将任何行插入数据库 table,它会在树视图中更新?
- 是否有任何使用 MVC 架构并使用 python、gtk、sqlite 构建的示例?
不知道有没有现成的例子;你所描述的内容听起来非常符合你的问题。
但是,您可以使用 Gda
库作为 Gtk.TreeModel
.
这就是我最终在我的应用程序中实现的!如果有更好的方法,请告诉我。
我已经使用 gtk.GenericTreeModel 在 gtk.Treeview 中显示来自 sqlite 数据库的数据。
当用户点击 'Click View' 时,sqlite 视图 被创建并连接到 gtk.GenericTreeModel 以便在 gtk.Treeview 中显示数据(图形用户界面)。
如果在创建 sqlite 视图后将数据添加到数据库,为了更新 gtk.Treeview,我们需要发出信号 "row-inserted."
来自 github 的项目 conduit 有一个将 sqlite 连接到 gtk 通用树模型的示例。
希望对您有所帮助!