首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何定义ScrollableFrame在ScrolledWindow中的高度?

如何定义ScrollableFrame在ScrolledWindow中的高度?
EN

Stack Overflow用户
提问于 2015-03-29 17:34:51
回答 1查看 127关注 0票数 0

我想把一些(~30) CheckButton放在位于BWidget::ScrolledWindow内部的BWidget::ScrollableFrame中。出于测试目的,我希望将ScrollableFrame的大小限制为100 by。我预期会有一个大小为100x100的ScrollableFrame,它能够滚动所有网格化的CheckButton,但是窗口会自动扩展,以便所有CheckButton都能适应TkRoot

以下是我尝试过的:

代码语言:javascript
复制
#!/usr/bin/env ruby

require 'tk'
require 'tkextlib/bwidget'

class TestClass < TkRoot

    attr_reader :checkbutton

    def initialize(*args)
    minsize(800, 400)

    @checkbutton = []
    for i in 0..29
        @checkbutton.push({:name => "checkbutton #{i}"})
    end
    createGUI()
end

def createGUI       
    TkLabel.new(self, :text => 'first label').grid({:column => 0, :row => 0, :sticky => 'w'})

    scrolledwindow = Tk::BWidget::ScrolledWindow.new(self).grid({:column => 0, :row => 1, :sticky => 'w'})
    scrolledwindow.auto('none') # want to see if scrollbars are attached correctly

    scrollframe = Tk::BWidget::ScrollableFrame.new(scrolledwindow).grid({:column => 0, :row => 0, :sticky => 'w'})
    scrollframe.height(100)
    scrollframe.width(100)

    # leads to error: /usr/lib/ruby/1.9.1/tk.rb:215:in `class_eval': window name "frame" already exists in parent (RuntimeError)
    #sftest = scrollframe.get_frame

    scrolledwindow.set_widget(scrollframe)

    @checkbutton.each_with_index { |cb, index|
        TkCheckButton.new(scrollframe, :text => cb[:name]).grid({:column => 0, :row => index, :sticky => 'w'})
    }

    TkLabel.new(self, :text => 'second label').grid({:column => 1, :row => 0, :sticky => 'w'})
end
end

所以..。怎么了?根据我看到的here,应该可以使用ScrollableFrame#get_frame检索一个框架,如下所示:

代码语言:javascript
复制
set a [$f getframe]

在红宝石里,我会这样做:

代码语言:javascript
复制
sftest = scrollframe.get_frame

我的安装中不存在get_frame方法。但是,我上面的ruby变体会导致以下错误:

代码语言:javascript
复制
/usr/lib/ruby/1.9.1/tk.rb:215:in `class_eval': window name "frame" already exists in parent (RuntimeError)

我真的不知道为什么这个错误会在这个小脚本中抛出,所以我无法测试是否可以在这个小部件上配置高度和宽度。如何为ScrollableFrame设置固定的高度和宽度?

更新:只要没有添加CheckButton,大小就会被正确设置。当我第一次添加CheckButton时,ScrollableFrame被设置为CheckButton所需的大小。如何防止调整大小?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-01 21:13:06

好的..。我使用的配置、安装或兼容性似乎存在问题。

我尝试了以下几点:

#!/usr/bin/env ruby1.8

然后不抛出错误,折叠行工作:

sftest = scrollframe.get_frame

现在可以将CheckButtons添加到sftest中,然后我可以滚动查看Checkbutton的列表.

格列茨

gg

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29332444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档