图片将解释标题:
在 LMDE 和 Ubuntu 12.04 下,我的 GtkIconView 看起来像这样 - 就图标之间的间距而言,它是正确的:
在 Ubuntu 12.10、13.04 和 Fedora 17 下,相同的代码显示如下:
注意 - 这是一个节奏盒 python 插件 - 源代码在 GitHub 上
我检查了以下 GtkIconView 属性 - 它们在 Ubuntu 12.04 和错误显示的 12.10 版本中完全相同。
- 项目填充
- 行间距
- 列间距
- 项目宽度
当我将text_column或markup_column(图标下的文本)设置为可见列(即将值从 -1 更改为列号)时,此显示行为会立即发生。
如果文本列/标记列被隐藏(即值为 -1),则所有发行版上的显示都是正确的。
由于它在完全相同的音乐集上运行相同的代码 - 我只能推测 Fedora 17/Ubuntu 12.10/13.04 中较新的 GTK 库的行为不同。
我的 google-fu 只找到了这个听起来相同的参考。但是检查 ubuntu-accomplishment-viewer 源代码并没有真正启发我。
有没有其他人遇到过这个?关于进一步调查的最佳方法有什么建议吗?
好的 - 我试图将其简化为基本要素 - 这个简单的 glade 文件和这个简单的代码会产生这个问题。但是我仍然不知道是什么导致了这种视觉效果:/
#!/usr/bin/env python 从 gi.repository 导入 Gtk, GdkPixbuf 窗口 = Gtk.Window() window.connect('delete_event', Gtk.main_quit) ui = Gtk.Builder() ui.add_from_file('reproduce.ui') page = ui.get_object('main_box') window.add(页面) ls = Gtk.ListStore(str, GdkPixbuf.Pixbuf) 图标 = GdkPixbuf.Pixbuf.new_from_file_at_size( str("/usr/share/icons/gnome/48x48/actions/zoom-out.png"), 90, 90) 对于范围内的 i (15): ls.append(['项目 %d' % i, 图标]) cover_view = ui.get_object('covers_view') cover_view.set_model(ls) 封面视图.set_text_column(0) 覆盖视图.set_pixbuf_column(1) cover_view.set_item_width(100) # 这些行更容易看出问题 crt, crp = cover_view.get_cells() crt.set_property('背景', '#000') crt.set_property('前景', '#AAA') 打印 crt.get_request_mode() window.set_default_size(600,400) window.show_all() gtk.main()
和林间空地 - http://pastebin.com/uvQ9mWeg
根据deinonychusaur的建议,我查看了gtkparasite
仅供参考 - 我在 Ubuntu 12.04 和 12.10 中都使用了来自 AnthonyWong的现成PPA。
两个版本的结果是相同的。尝试使用应用程序更改 IconView 属性并没有真正解决这个问题。
deinonychusaur 的下一个建议看起来很有趣,我可以确认 - 即
IconView CellRendererText 是 Fedora 17/12.10/13.04 中 IconView Pixbuf 大小的 2 倍,但是 12.04 中 IconView Pixbuf 大小的 1 倍。