使用预制用户界面 (pygubu) 时如何在 Tkinter 中扩展滚动条

How to expand a Scrollbar in Tkinter when working with a pre-made user interface (pygubu)

PyGubu 是一个简单的 Python 程序,允许使用 Tkinter 小部件创建 UI 界面。

所以我创建了一个 UI 像右边的这个

现在,我希望滚动条与文本小部件一样大。

"How can I make the Scrollbar bigger on Tkinter" 在 Whosebug 上被问了很多次。就我而言,我无法使用函数 pack() 或 grid(),因为我正在导入一个已经半完成的 UI

我用来加载Text和Scrollbar的代码如下:

    self.log = builder.get_object('log')
    self.log_scroll = builder.get_object('log_scroll')
    self.log.config(yscrollcommand=self.log_scroll.set)
    self.log_scroll.config(command=self.log.yview)

现在,我在这里看到两种可能性:


1。从 PyGubu

求解

最简单的方法应该是从 PyGubu 设置一些属性来解决这个问题。然而,PyGubu 只允许我更改滚动条的少量属性,其中 none 似乎是相关的

2。从 Python

求解

在这里我不知道该怎么做。我不知道在使用自定义接口时是否可以使用 pack() 和 grid()

感谢任何帮助

在写问题时,我找到了一个 not-so-intuitive 答案,仍然是最好的答案:

属性"sticky"才是能解决问题的人。什么是not-so-intuitive就是你可以select多个方块ctrl+click。如果您习惯于使用 Tkinter,这可能不会让您感到惊讶,但就我而言(使用 Tkinter 的第一天)我可以认为自己很幸运

当您在 Pygubu 中设置粘性选项时,即使所有三个方块都突出显示,它也会设置 NS(北南),这是预期的结果。

生成的代码也只有 'ns',像这样:

self.scroll_bar.grid(column='0', row='0', sticky='ns')

在 Pygubu 中选择 central/middle 方块不会影响 'ns'。当您突出显示 3 个方块时,它应该仍会为您提供预期的结果。