2011-02-22 142 views
1

我正在使用Python Tkinter,并且希望在框架或画布中放置可变数量的文本框小部件。文本框被垂直包装在框架中,所以第一个在顶部,第二个在下面,等等。我可以在GUI的“左边部分”中拥有所有按钮,列表框等widget,而一个“右侧部分”将只包含文本框小部件。当主窗口最大化时,我想让文本框小部件水平展开,但由于这些小部件的数量是可变的,因此包含文本框的“右部分”也需要能够垂直滚动以全部查看它们。Python Tkinter - 包含可扩展小部件的可滚动画布

目前,我正在使用Canvas.create_window将可变数量的文本框添加到画布,并且当我可以滚动画布以查看所有文本框时,在调整窗口大小时它们不会水平展开。我有一个替代的图形用户界面,它为“右部分”使用了一个框架,它允许小部件进行水平扩展,但是如果打包太多,我无法滚动框架以查看其他文本框,因为我无法滚动酒吧绑在一个框架上。

有没有办法解决这个问题?

回答

0

该解决方案非常简单:绑定到画布的<Configure>事件 - 这将导致您的回调在调整画布窗口小部件时被调用。然后您只需获取画布的宽度并使用它来迭代调整所有嵌入式窗口的大小。

+0

我假设要绑定到画布的事件,我只需键入:canvas.bind(“”)。为了获得画布的宽度,我可以使用canvas.cget(“width”)。我不确定如何使用宽度来调整所有嵌入文本框的大小。 – dmranck 2011-02-22 20:23:42