python - PyGTK 2 : TreeView is extending out of my window even with scroll bar enabled

标签 python scroll treeview gtk pygtk

我有一个 Gtk 窗口设计如下,

-Window
  |- Scroll_Window
    |- TreeView

通过这种设计,我可以在启用垂直滚动条的滚动窗口内看到 TreeView 。但问题是, TreeView 延伸到了我的窗外。因此,如果使用箭头键向下移动 TreeView ,则 TreeView 光标将消失(即向下移动实际滚动窗口)。

但是如果我使用鼠标滚动 TreeView ,我就可以正确地看到我的 TreeView 数据。

预期行为是按下向下箭头键, TreeView 应自行滚动,光标始终可见。

代码:

import sys;
import dbf, gtk, pygtk, gobject;
pygtk.require('2.0');


w = gtk.Window(gtk.WINDOW_TOPLEVEL);
w.set_title("TEST");
sw = gtk.ScrolledWindow();
sw.set_border_width(10);
sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC);

treeView = gtk.TreeView();
listView = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING);

inData = [["a","1"],["b","bb"],["c","cc"],["d","dd"],["e","ee"],["f","ff"],["g","gg"],["h","hh"],["i","ii"],["j","jj"],["k","kk"],["l","ll"],["n","nn"]];
for nameTinList in inData:
  listIter = listView.append();
  listView.set_value(listIter, 0, nameTinList[0]);
  listView.set_value(listIter, 1, nameTinList[1]);

column = gtk.TreeViewColumn("Name", gtk.CellRendererText(), text=0);
column.set_resizable(False);
treeView.append_column(column);
column = gtk.TreeViewColumn("DESC", gtk.CellRendererText(), text=1);
column.set_resizable(False);
treeView.append_column(column);

treeView.set_model(listView);
sw.add_with_viewport(treeView);
w.add(sw);
w.show_all();

gtk.main();
w.destroy();

输出: enter image description here

最佳答案

sw.add_with_viewport(treeView) 替换为 sw.add(treeView),使用键盘滚动即可正常工作。

the documentation状态,add_with_viewport 适用于没有 native 滚动功能的子窗口小部件。对于实现滚动的小部件,例如 gtk.TextViewgtk.TreeViewadd 方法(继承自 gtk.Container) 应该使用。

关于python - PyGTK 2 : TreeView is extending out of my window even with scroll bar enabled,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35376266/

相关文章:

android - 在 Android 版本的 phonegap 中不滚动 HTML 页面内的元素

c# - Navisworks TreeView 到数据表

c# - 如何使用 asp.net 检查在 TreeView 子节点中导航页面的权限?

c# - Windows 窗体/ TreeView : How do I put CheckBoxes only on the leaves?

python - 将颜色应用于渐变方向

python - 使用 python 和 numpy 加载文件的最快方法是什么?

python - Cefpython GetText() 函数

Python Eclipse 管道

css - 是什么导致某些 iOS 网页在滑动手指松开时不继续滚动?

c++ - 这个开关发生了什么? (C++ 滚动菜单)