GTK - Python Treeview 列重新排序警告
GTK - Python Treeview Column Reorder Warnings
我有一个简单的 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 列表视图时遇到过同样的问题。我无法解决问题。但这可能是软件的错误。网络上有一些包含类似问题的示例 (link1, link2)。
当树视图列的大小调整为 0 或移动列 header 按钮以重新排序时,它们会出现负列警告。 GTK 版本是 3.22 和 3.24。不知道有没有修复,我没有安装最新的版本。
如果将大小调整 属性 设置为 gtk.TREE_VIEW_COLUMN_GROW_ONLY
不会阻止警告并且警告不会导致应用程序崩溃,那么现在让它们在那里是安全的。这似乎是一个 GTK 错误。
如果您有兴趣查看 repo issues GTK negative content issue 但它并没有太多承诺;他们还没有解决。因此,尽管警告很烦人,但它们似乎并无害处
我有一个简单的 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 列表视图时遇到过同样的问题。我无法解决问题。但这可能是软件的错误。网络上有一些包含类似问题的示例 (link1, link2)。
当树视图列的大小调整为 0 或移动列 header 按钮以重新排序时,它们会出现负列警告。 GTK 版本是 3.22 和 3.24。不知道有没有修复,我没有安装最新的版本。
如果将大小调整 属性 设置为 gtk.TREE_VIEW_COLUMN_GROW_ONLY
不会阻止警告并且警告不会导致应用程序崩溃,那么现在让它们在那里是安全的。这似乎是一个 GTK 错误。
如果您有兴趣查看 repo issues GTK negative content issue 但它并没有太多承诺;他们还没有解决。因此,尽管警告很烦人,但它们似乎并无害处