- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图了解以下概念,但我阅读的所有文档都将所有内容捆绑在一起,但没有解释它们的真正含义,因此我不知道如何使用它们他们的正确。如果有人能给出某种真实世界的类比,那将大有帮助。
TreeView ListView(这甚至是一件事吗?)树店列表存储树模型TreeIter
我的最终目标是从数据库中读取一组结果并将它们作为可点击项显示在小部件上。我已经了解了查找和检索部分,但事实证明,将结果传回、显示它们并让它们更新要棘手得多。
更新:以下是为了从 postgreSQL 数据库读取结果并将其放入“容器”中,从那里我可以将结果分配给输出对话框:
result = self.lookup_player(search) # this returns a result of cur.fetchall
print result # just to make sure it returns the right things
if len(result) > 0: # make sure there are results
for i in range(0, len(result)): # i used treeiter to see what it did
treeiter=store.append([result[i][0],result[i][1],str(result[i][4])])
print result[i][0],result[i][1],result[i][2],result[i][3],result[i][4],result[i][5],result[i][6],result[i][7],result[i][8],result[i][9],result[i][10]
else:
print "No players found"
我在上面使用了 ListStore,因为它看起来最合适。但也许我应该使用 Treestore,或者一个简单的列表,或者一个数组......很容易看出什么是字符串,或整数、 float ,但这些列表/树/模型/存储实际上是什么样子或做什么?
几年前我不得不放弃用 C 编写代码,因为我无法理解什么是多态链表,这次我迫切希望避免与 Python 重蹈覆辙。
最佳答案
您对上面的 GtkListStore 代码的想法是正确的:它是一个与 SQL 表非常相似的数据存储。事实上,您会发现 GtkTreeView 基础架构的工作方式类似于 SQL 表。您的 Gtk.ListStore()
构造函数调用直接映射到 CREATE TABLE
并且您的 append()
调用直接映射到 INSERT ROW
.
需要注意的重要一点是,您的 GtkListStore 中的列是从左到右编号的,从 0 开始,而不是命名。这一点很重要。
GtkListStore 和 GtkTreeStore 之间的区别在于后者允许您将行作为其他行的子行,就像文件浏览器中的文件夹树一样。子行必须具有与父行相同的列格式。
GtkListStore 和 GtkTreeStore 都是 GtkTreeModel 的实现,它是一个接口(interface)。据我所知,Python 没有像接口(interface)这样的直接概念,因此只需将接口(interface)想象成一个抽象基类,其中没有默认实现并且必须定义每个函数。 GtkTreeModel 指定允许 GtkTreeView 在屏幕上显示数据的方法。
所以现在唯一的问题是如何将 GtkTreeView 连接到 GtkTreeModel/GtkListStore/GtkTreeStore?
正如您在 SQL 中所记得的那样,表的每一列都有特定的数据类型。使用 GtkTreView,一列中的所有单元格都具有相同的单元格渲染器。单元格渲染器使用 GObject 属性 绘制文本、图片、复选框等。您可能已经使用过属性:text
是 GtkLabels 上的一个属性,active
是 GtkCheckButtons 上的一个属性,等等。Cell 渲染器的属性不仅指定要绘制的数据, 以及如何绘制它。
当您将“属性”(在函数名称中)提供给 GtkTreeViewColumn(GtkTreeView 中单个列的表示)时,您为调用的函数提供了两件事:单元格渲染器本身和一个属性列号对的列表。
例如,假设您希望表模型的第 0 列提供第一列的文本。以下是创建列的方式:
renderer = Gtk.CellRendererText() # create a text cell renderer
column = Gtk.TreeViewColumn("Column") # create the column
column.pack_start(renderer, True) # load the renderer...
column.add_attribute(renderer, "text", 0) # ...and tell it to get its text from the first column of the model
现在剩下的就是将列添加到 GtkTreeView 并将 GtkListStore 设置为 GtkTreeView 的模型(使用 set_model()
)。如果一切顺利,您应该会在 GtkTreeView 中看到您的数据。
GtkTreeView 不提供自己的滚动条。确保将 GtkTreeView 放在 GtkScrolledWindow 中以获取它们。
有一个 GtkListBox,但它与此完全无关。
希望这有助于解决问题!如果不明白,请随时指出您不明白的地方,我会相应地修改此答案。
更新:回应您询问为什么 GtkTreeView 如此工作的评论,而不是管理所有数据本身并仅具有 add_row()
和 等功能set_cell_value()
。这种设计有几个优点:
关于Python (GTK) : Can someone explain the difference between TreeStore, Listmodel 和所有其他的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28448852/
我知道这类问题已经得到解答,但就我而言,我已经尝试了所有配置,但仍然不起作用。我需要对我的配置有一个新的看法(我确信我错过了一些东西)。两个附加程序都会记录所有级别 我想将所有包的信息 >= 记录到控
我正在对 Windows 移动设备上的代码性能进行一些基准测试,并注意到某些算法在某些主机上的表现明显更好,而在其他主机上则明显更差。当然,考虑到时钟速度的差异。 供引用的统计数据(所有结果均由同一个
我有一个程序可以计算多边形的面积和周长。程序还会确认面积和周长的计算结果是否与预期结果相同。 我不明白发生了什么,但确认面积和周长是否与预期相同的验证部分无法正常工作。 例如,我现在测试并在所有情况下
Codepen :(对于那些想直接进入的人来说,这是一个代码笔。在 Chrome 和 IE 中尝试一下,看看结果的不同) 我正在尝试使用 css3 转换/过渡,因为它们比 jquery 效果更流畅。
我有几个不同的正则表达式要在给定文本中匹配和替换。 regex1 :如果文本包含单词“Founder”,则将所有文本替换为首席执行官 正则表达式2:如果文本包含9位数字,则将其替换为NUM 我尝试使用
我编写了多线程应用程序,它从每个线程的数据库连接到一些电子邮件帐户。我知道 JavaMail 没有任何选项可以使用 SOCKS5 进行连接,因此我决定通过 System.setProperty 方法使
如您所见,这是我当前 Storyboard的不同设备预览。底部的透明绿色被另一个 View Controller 占用,但需要为每个不同的尺寸类固定间距。我尝试将 Storyboard 中的宽度和高度
我正在创建一个游戏,我需要能够改变玩家 Sprite 的速度。我认为最好的选择是通过重力影响 Sprite 。为了给用户运动的感觉,我希望背景以完全相同的速度向相反的方向移动。 我怎样才能给背景一个不
我正在查看BTrees库并注意到有多个 TreeSet (和其他)类,例如 BTrees.IOBTree.TreeSet BTrees.OOBTree.TreeSet BTrees.LFBTree.T
我有一个小型 C++ 库,必须为 armeabi 和 armeabi7a 编译。我还有一个非常大的 c++ 库,只需要为 armeabi 编译。现在正在为两种架构编译它们(使用 NDK),但这使我的
我需要根据站点的当前部分稍微更改主题。 似乎 MuiThemeProvider 只在加载时设置 muiTheme;但需要在 props 变化时更新。 如何做到这一点? 最佳答案 您可以尝试将主题放在包
如何创建两个每个都有自己的计数器的 lSTListing 环境? 如果我使用例如 \lstnewenvironment{algorithm}[2]{ \renewcommand\lstlist
我想使用 Travis-CI 和 Github 基于分支设置部署。 IE。 - 如果我们从 develop 构建- 然后执行 /deploy.rb使用 DEV 环境主机名,如果 master - 然后
我有一个带有数据验证的 WPF MVVM 数据表单窗口。很多控件都是文本框。目前,数据绑定(bind)触发器设置为默认值,即。 e.失去焦点。这意味着仅在可能完全填写字段时才对其进行验证。所以当删除一
我有许多应用程序的内容页面,并最终为每个内容页面编写了很多 View 模型。例如。如果我有一个包含项目组的列表,我将有一个 ShowAllViewModel并绑定(bind)到内容页面和列表中单个项目
我有一个通用 View 和 4 个其他 View 。我在通用 View 中使用 Bootstrap 选项卡(导航选项卡)。我希望其他 4 个 View 成为通用 View 中 4 个选项卡的内容。由于
我希望针对 Maven 发布插件的不同目标有不同的配置选项。故事是这样的: 我正在将 Git 用于 SCM。我希望release:prepare插件在本地完成所有操作,并让release:perfor
我正在为一个项目使用AbstractTableModel制作一个自定义TableModel,并且我需要找到一种方法让复选框显示在某些行上,而不是其他行上。我已经实现了 getColumn 方法,但我希
摘自《Javascript 忍者的 secret 》一书: EVENTS ARE ASYNCHRONOUS Events, when they happen, can occur at unpredi
我正在尝试配置我的第一个 GWT 记录器,到目前为止,我已经将日志消息打印到我的 JS 控制台(FF 的 Firebug): 最终,我希望非SEVERE 消息转到consoleHa
我是一名优秀的程序员,十分优秀!