【问题标题】:GTK - Python Treeview Column Reorder WarningsGTK - Python Treeview 列重新排序警告
【发布时间】:2021-03-29 12:50:43
【问题描述】:

我有一个简单的 GTK GUI,上面有一个 treeview。当我拖动列进行重新排序时,它会出现以下错误。如何解决这个问题?

警告:

Gtk-WARNING **: 15:43:03.151: Negative content width -8 (allocation 1, extents 5x4) while allocating gadget (node button, owner GtkButton)

Gtk-WARNING **: 15:43:03.151: Negative content height -1 (allocation 1, extents 1x1) while allocating gadget (node button, owner GtkButton)

Gtk-WARNING **: 15:43:05.886: Negative content width -8 (allocation 1, extents 5x4) while allocating gadget (node button, owner GtkButton)

简化代码:

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, GLib

builder = Gtk.Builder()
builder.add_from_file('test.glade')
window1 = builder.get_object('window1')
treeview1 = builder.get_object('treeview1')

class Signals:
    def on_window1_destroy(self, widget):
        Gtk.main_quit()

list_data = [["text1", "data1", "data2"], ["text2", "data1", "data2"], ["text3", "data1", "data3"]]

treestore1 = Gtk.TreeStore(str, str, str)
piter1 = treestore1.append(None, list_data[0])
piter2 = treestore1.append(piter1, list_data[1])
piter3 = treestore1.append(piter1, list_data[2])

treeview1.set_model(treestore1)

for i, column_title in enumerate(["col1", "col2", "col3"]):
    renderer = Gtk.CellRendererText()
    column = Gtk.TreeViewColumn(column_title, renderer, text=i)
    treeview1.append_column(column)
    column.set_sort_column_id(i)
    column.set_resizable(True)
    column.set_reorderable(True)

treeview1.expand_all()

builder.connect_signals(Signals())
window1.show_all()
Gtk.main()

软件版本:GTK 3, Python 3.8.

重要:

  • 如果需要,将提供 Glade GUI 文件。
  • 在我之前的尝试中,listview 收到了类似的警告。

【问题讨论】:

  • 似乎在流程的某个时刻,您的列消失了。尝试将大小属性设置为 gtk.TREE_VIEW_COLUMN_GROW_ONLY 或 gtk.TREE_VIEW_COLUMN_AUTOSIZE
  • @Ulises Martínez Elías,我分别尝试了命令column.set_sizing(0)(grow_only)和column.set_sizing(1)(自动调整大小),但它们并没有阻止警告。将列调整为最小大小也会给出类似的警告。
  • @demirod 我没有收到通知,就像你已经猜到的那样。我碰巧偶然发现了这个问题。至于错误,我在我的应用程序中看到了很多,没有问题。其他答案说明了一切。

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


【解决方案1】:

很久以前我在使用 GTK 列表视图时遇到过同样的问题。我无法解决问题。但这可能是软件的错误。网上有一些例子包含类似的问题(link1link2)。

当将树视图列的大小调整为 0 或移动列标题按钮以对其重新排序时,它们会出现负列警告。 GTK 版本是 3.22 和 3.24。不知道有没有修复,我没有安装最新版本。

【讨论】:

    【解决方案2】:

    如果将 sizing 属性设置为 gtk.TREE_VIEW_COLUMN_GROW_ONLY 不会阻止警告并且警告不会导致应用程序崩溃,那么现在让它们在那里是安全的。这似乎是一个 GTK 错误。

    如果您有兴趣查看回购问题GTK negative content issue,但它并没有太多承诺;他们还没有解决。所以,虽然这些警告很烦人,但它们似乎是无害的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-19
      • 2015-09-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多