【问题标题】:Python Gtk Grid removing all rowsPython Gtk Grid删除所有行
【发布时间】:2015-11-29 20:37:15
【问题描述】:

我认为这对我来说很容易,但我试图从 Gtk.Grid 中删除所有行(用不同长度的新数据填充它)并且仍然有问题。 我尝试如下,使用 row=0 或 1,更改行 (row=row+1) 或不更改行,因为我不知道删除上面的行后会做什么,尝试使用 '!=None' 或不使用 ' !=None' 和其他选项,但仍然没有:

row=0
while(self.grid.get_child_at(1,row)!=None):
    self.grid.remove_row(row)
    row=row+1

我得到的只是从网格中删除一行。 我也尝试删除整个网格,但是在创建它之前删除小部件时出现问题(在开始时)

if (self.grid):
    {remove}

对我不起作用。我必须补充一点,网格已填充(并且我试图将其删除)而不是程序的主要部分。

【问题讨论】:

  • 您是否尝试过遍历 get_children() 并删除所有这些人?

标签: python python-3.x grid gtk gtk3


【解决方案1】:
    while True:
        if self.grid.get_child_at(0,1)!= None:
            self.grid.remove_row(1)
        else:
            break

当然,如果您的孩子仅在第 1 列或更大的列中,这将不起作用。您也必须搜索这些(self.grid.get_child_at(1,1)、self.grid.get_child_at(2,1) 等)。

【讨论】:

    【解决方案2】:

    首先,如果要显示数据,请使用GtkTreeView/Store。这是制作用于显示数据的,并且可以扩展到超过 100 个项目。

    hacky 方法: 另一种选择可能是只破坏网格,这反过来又会破坏它的孩子。但老实说,这只会隐式地执行上述循环。您也可以将上述循环包装在一个函数中并调用它。

    【讨论】:

    • 谢谢! GtkTreeview 实际上对我的程序要好得多,使用 ListStore.clear() 清除它是平庸的
    猜你喜欢
    • 2017-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-12
    • 2017-05-20
    • 1970-01-01
    • 1970-01-01
    • 2011-05-06
    相关资源
    最近更新 更多