PyGTK:ScrolledWindow大小问题

2 投票
1 回答
3240 浏览
提问于 2025-04-16 09:18

我正在使用PyGTK和gtk.Assistant。在一个页面上,我放置了一个树视图(只有一列,里面全是字符串),并把它放在了一个gtk.ScrolledWindow里(我想要一个垂直滚动条,因为列表里大约有35个项目)。一切运行得很好;唯一让我烦恼的是,我一直没能从文档中找到如何设置滚动窗口大小的方法。目前一次只能显示三个项目;我想把这个数字设置为10个左右。

下面是我的代码。正如你所看到的,我尝试使用gtk.Adjustment来影响滚动窗口的大小,但由于我在文档中找不到所需的信息,所以我实际上不知道该填入什么值。

    self.page7 = gtk.VBox()

    # The gtk.Adjustment:
    page_size    = gtk.Adjustment(lower=10, page_size=100) # just used some arbitrary numbers here >_<
    scrolled_win = gtk.ScrolledWindow(page_size)
    scrolled_win.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) # only display scroll bars when required

    self.character_traits_treeview  = gtk.TreeView()
    self.character_traits_treestore = gtk.TreeStore(str)
    self.character_traits_treeview.set_model(self.character_traits_treestore)

    tc = gtk.TreeViewColumn("Character traits")
    self.character_traits_treeview.append_column(tc)
    cr = gtk.CellRendererText()
    tc.pack_start(cr, True)
    tc.add_attribute(cr, "text", 0)

    self.character_trait_selection = self.character_traits_treeview.get_selection()
    self.character_trait_selection.connect('changed', self.check_number_of_character_trait_selections)
    self.character_trait_selection.set_mode(gtk.SELECTION_MULTIPLE)

    self.make_character_traits_treestore()

    # adding the treeview to the scrolled window:
    scrolled_win.add(self.character_traits_treeview)
    self.page7.pack_start(scrolled_win, False, False, 0)

    self.assistant.append_page(self.page7)
    self.assistant.set_page_title(self.page7, "Step 7: Select 2-3 character traits")
    self.assistant.set_page_type(self.page7, gtk.ASSISTANT_PAGE_CONTENT)
    self.assistant.set_page_complete(self.page7, False)

def check_number_of_character_trait_selections(self, blah):
    # ...

def make_character_traits_treestore(self):
    # ...

我知道我应该好好读文档,但我看不懂,而且进一步搜索也没有结果,所以我只是希望这里有人能给我一点提示。

非常感谢!

PS:这里是相关链接:

  • 关于gtk.ScrolledWindow文档
  • 关于gtk.Adjustment文档

1 个回答

2

我真是太傻了,这只是个打包的问题 >_<

这一行

self.page7.pack_start(scrolled_win, False, False, 0)

应该改成

self.page7.pack_start(scrolled_win, True, True, 0)

才对!

现在一切都看起来和我想的一样了。

撰写回答