小编gpo*_*poo的帖子

在Gtk中,TreePath和TreeIter之间有什么区别?

我一直在学习使用TreeViews,这两种类型通常用于访问树的特定行.我真的不明白两者之间的区别.我的代码正在工作 - 我根据函数的必需参数在两者之间来回转换 - 但不是基于对原因的真正理解.

这两种类型有什么区别?

c# gtk gtk# gtktreeview

5
推荐指数
1
解决办法
1750
查看次数

GtkTextView 自动调整大小

我第一次在 GTK 和 Glade 上乱搞,我遇到了一个非常烦人的问题。当我在 TextView 中输入文本时,TextView 会自动调整大小,将其他小部件推开。

这是一个非常烦人的行为。我不希望我的 TextView 根据其中的文本量改变大小。

有谁知道我可以做些什么来防止 TextView 根据其内容调整大小?

c gtk gtktextview

5
推荐指数
1
解决办法
1702
查看次数

_really_禁用GtkTreeView搜索

我如何真正禁用gtk treeview交互式搜索?该文件set_enable_search(False),但如果我这样做,CTRL+ F还是引起了一个恼人的搜索弹出出现.连接start-interactive-search和返回True也不起作用.

python gtk pygtk gtktreeview

5
推荐指数
1
解决办法
703
查看次数

在信号期间在GtkTreeView中获取新选择

我希望无论何时选择我的gtk.TreeView更改都会检测到它,以及何时调用具有此信息的函数.到目前为止,我发现这样做的唯一方法是附加所有这些信号:

...
    self.sitterView.connect("cursor-changed", self.selectionChanged)
    self.sitterView.connect("unselect-all", self.selectionChanged)
    self.sitterView.connect("toggle-cursor-row", self.selectionChanged)
    self.sitterView.connect("select-all", self.selectionChanged)    
...
def selectionChanged(self, treeview):
    foo(self.sitterView.get_selection().get_selected())
Run Code Online (Sandbox Code Playgroud)

但是,似乎我从回调中获得的选择是"延迟的".也就是说,它显示上一次回调完成后的选择.例如,如果我经常按CTRL +单击一行,当行从取消选择变为选中时,foo不会被选择,当行从选择变为取消选择时,将给出一个选择.如果我get_selection().get_selected()稍后再打电话,我会得到正确的选择.知道怎么处理这个吗?

python gtk pygtk gtktreeview

5
推荐指数
1
解决办法
2245
查看次数

如何正确使用GtkTreeView

我使用带有ListStore的TreeView作为模型.当用户点击一行时,我想采取一些行动但不使用单元格中的值,但使用我创建的行数据......

目前我有TreeView,TreeModel(ListStore)和我自己的数据(我讽刺地称之为模型).

所以问题是:

拥有一个模型 - 我想要显示的数据的对象表示并填充ListStore以显示在TreeView中的数据是否"正确",或者更好地实现自己的TreeModel版本(包装我的数据) model)显示数据?

并且:

如果有人双击一行,我可以获得RowActivated事件(使用C#/ Gtk#),该事件提供激活行的路径.有了它我可以得到一个TreeIter并使用它我可以得到一个单元格的值.但是,首先要找到构造行的数据对象的最佳实践是什么?\(不知何故,这个问题让我想到了第一个 - 通过思考如果我试图实现自己的数据对象会更容易TreeModel的...)

gtk mono gtk# gtktreeview

5
推荐指数
1
解决办法
4585
查看次数

右键单击GtkTreeView的行

当用户右键单击树视图行时,如何执行某些操作?

pygtk click right-click treeviewitem gtktreeview

5
推荐指数
1
解决办法
2755
查看次数

如何使最后一个gtk.TreeViewColumn可调整大小?

可以使用gtk.TreeViewColumn.set_resizable(True)手动调整列的大小...除了最后一列 - 它总是占用可用空间.

虽然在大多数情况下它是明智的,但我使用TreeView-in-a-ScrolledView,我希望能够缩小/扩展最后一列.

目前我使用以下kludge:

def add_dummy_column(treeview):

    def put_dummy_last(treeview, dummy):
        columns = treeview.get_columns()
        last = next(reversed(columns), None)
        if not last or last == dummy:
            return
        if dummy in columns:
            treeview.move_column_after(dummy, last)
        else:
            treeview.append_column(dummy)

    dummy = gtk.TreeViewColumn()
    dummy.set_min_width(1)
    dummy.set_fixed_width(1)
    dummy.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
    dummy.set_resizable(False)
    dummy.set_expand(False)
    treeview.connect('columns-changed', put_dummy_last, dummy)
    return dummy
Run Code Online (Sandbox Code Playgroud)

但是,这个虚拟列往往会妨碍:使TreeView列循环复杂化等等.是否有更好/更优雅的解决方案?

更新:它确实有效

在尝试打造一个最小的例子时,我发现它没有我的kludge工作正常.这是没有gtk.ScrolledWindow的最小示例:

import gtk

window = gtk.Window()
window.connect('destroy', lambda *args: gtk.main_quit())

vbox = gtk.VBox()
window.add(vbox)

table = gtk.TreeView(gtk.ListStore(str, str, str))

for i in range(3):
    column = gtk.TreeViewColumn('Column {}'.format(1 + i))
    column.set_resizable(True) …
Run Code Online (Sandbox Code Playgroud)

python pygtk gtktreeview

5
推荐指数
1
解决办法
1743
查看次数

你如何改变pygtk中gtk.TreeView的交替背景行颜色?

我正在尝试更改树视图的交替背景颜色.我知道这应该通常留给主题,但我想覆盖以测试gtk Style功能.根据这里的treeview文档,我了解到TreeView有几个只读样式选项,包括"偶数行颜色","奇数行颜色"和"允许规则"(根据文档) ,允许绘制偶数和奇数行颜色).我知道为了覆盖那些只读设置,我必须改变gtkrc风格的文件或字符串中的样式.

所以我的树视图字符串看起来像:

    gtk.rc_parse_string( """
        style "custom-treestyle"{
            GtkTreeView::odd-row-color = "#00CBFF"
            GtkTreeView::even-row-color = "#90EE90"
            GtkTreeView::allow-rules = 1
        }
        widget "*custom_treeview*" style "custom-treestyle"
    """)
    treeview.set_name("custom_treeview" )
Run Code Online (Sandbox Code Playgroud)

这解析没有错误,结果是偶数行颜色应用于偶数行和奇数行.

编辑:我从一些更多的测试中发现,我的解析字符串必须从其他一些样式设置中被覆盖.

print treeview.style_get_property( 'allow-rules' )
print treeview.style_get_property( 'odd-row-color')
print treeview.style_get_property( 'even-row-color')
Run Code Online (Sandbox Code Playgroud)

给出结果:

True
None
None
Run Code Online (Sandbox Code Playgroud)

这些都是默认设置.通常我会认为它根本不解析字符串并设置适当的值,但在这种情况下,背景颜色确实会改变为我指定的颜色(只有它将每一行的背景绘制为一种颜色).

我究竟做错了什么?

python gtk pygtk gtktreeview

5
推荐指数
1
解决办法
3970
查看次数

PyGtk如何使用过滤器更改TreeView数据?

我要做的是动态更改(通过过滤器)字符串列表.在我的例子中,它是存储路径的文件列表gtk.TreeStore.

预期效果的示例(例如,Sublime Text 2文件搜索Ctrl+ P):

数据:

文件列表(treeview):

  • '/ home/user中/'
    • '.bashrc' 中,
    • '的test.txt',
  • ...

操作:在过滤器字段(Entry小部件)中,用户开始键入.在第一个字符后例如.'t'列表应该像这样更新:

结果:

文件列表(treeview):

  • '的test.txt',
  • ...所有包含't'的字符串(匹配函数现在不重要)

我已经拥有的东西:

self.search_entry = gtk.Entry()

self.tree_store = gtk.TreeStore(gobject.TYPE_STRING, gobject.TYPE_BOOLEAN)

for node, files in self.files_list:
    parent = self.tree_store.append(None, [node, True])
    for f in files:
        self.tree_store.append(parent, [f, True])

tree_filter = self.tree_store.filter_new()
self.treeview = gtk.TreeView(tree_filter)

self.renderer0 = gtk.CellRendererText()
self.treeview.insert_column_with_attributes(-1, "Filename", self.renderer0, text=0)
self.treeview.set_search_column(0)
self.treeview.set_search_entry(self.search_entry)
self.treeview.expand_all()
Run Code Online (Sandbox Code Playgroud)

我知道TreeView有一个方法set_search_equal_func可以将默认匹配函数更改为我自己的.问题是如何在过滤器表单字段中键入时更改列表?

python pygtk filtering gtktreeview

5
推荐指数
1
解决办法
2220
查看次数

Python:将子流程模块从v3.3导入到v2.7.4

我想将subprocess模块从py v3.3 导入到v2.7,以便能够使用该timeout功能。

看了几篇文章后,我尝试了

from __future__ import subprocess
Run Code Online (Sandbox Code Playgroud)

但它说:

SyntaxError: future feature subprocess is not defined
Run Code Online (Sandbox Code Playgroud)

然后我发现未来没有任何功能subprocess

那么我应该subprocess从哪里导入v3.3?

python future python-2.7 python-3.x

5
推荐指数
1
解决办法
842
查看次数