【问题标题】:How to implement a scrollbar when using grid manager on a tkinter window在 tkinter 窗口上使用网格管理器时如何实现滚动条
【发布时间】:2014-01-31 21:04:23
【问题描述】:

我使用网格管理器方法在 tkinter 中构建了一个相当大的 GUI。我需要在整个窗口中添加一个滚动条,我遇到了一些麻烦。这是使用 Tkinter 中的网格管理器的滚动条的一个非常粗略的版本(我不想滚动列表框,我想滚动整个 Tk 窗口)。

import Tkinter
from Tkinter import *

Tk = Tkinter.Tk
self=Tk()
listbox = Listbox(self, width = 10, height = 60)
listbox.grid(row =0, column=0)
scrollbar = Scrollbar(self)
scrollbar.grid(sticky=E, row = 0, rowspan = 100, column = 11, ipady = 1000)
mainloop()

是否可以修复 Tkinter 窗口大小(使用网格管理器)并添加一个滚动条,然后允许用户查看其他内容?窗口太大,需要查看其他内容,所以我看到的唯一选项是滚动条。我只看到使用 pack 方法的示例。正如您可能猜到的那样,我是 Tkinter 的新手,如果有任何意见,我将不胜感激。

在此先感谢大家。

【问题讨论】:

标签: python user-interface grid tkinter scrollbar


【解决方案1】:

您不能滚动根窗口、顶层窗口或框架的全部内容。解决方案是将所有小部件放在画布中,然后在画布上添加滚动条。本站有问题给出例子,如Python Tkinter scrollbar for frame

【讨论】:

  • 所以如果我使用 .grid 方法或网格管理器来布局所有 GUI 小部件,我必须使用画布和 .pack 方法转换 GUI?无论如何添加一个按钮,它只会将根视图移动到底部边缘(我猜不是)?我希望避免重组整个项目。感谢您的帮助。
  • @user2860797:不完全是。您仍然使用网格将所有小部件布置在一个框架中。不要将它们直接放在根中,而是将它们放在框架中。然后,您将该框架放在画布中,以便您可以滚动它。所以你最终会得到 root.canvas.frame.listbox 而不是 root.listbox。听起来很复杂,但其实不然。
猜你喜欢
  • 2018-01-30
  • 2016-06-20
  • 1970-01-01
  • 2021-12-02
  • 2020-07-07
  • 1970-01-01
  • 2019-05-05
  • 1970-01-01
  • 2020-05-05
相关资源
最近更新 更多