【问题标题】:Limiting scroll bar length限制滚动条长度
【发布时间】:2014-01-24 09:28:29
【问题描述】:

我正在尝试使用 Perl Tk 创建一个简单的记事本,例如 GUI。我使用 Scrolled 小部件创建了一个带有两个滚动条的 Text 小部件——一个在右侧,一个在底部。两个滚动条相交的地方是这样的:

但是,我想让它看起来像 Microsoft 在“记事本”应用程序中看到的那样。这就是我想要的:

如您所见,两个滚动条相交的地方现在有一个“空方格”。记事本的另一个特点是这个“正方形”可以用来调整窗口大小。我希望能够实现同样的目标。

我该怎么做?

谢谢!

【问题讨论】:

  • 你知道,如果你偶尔接受一个答案,它会让人们更有动力回答你可能有的其他问题。

标签: perl tkinter tcl tk perltk


【解决方案1】:

诀窍是使用grid 几何管理器放置小部件,这实际上创建了一个(大小不一的)4x4 网格,文本小部件位于“North-West”,垂直滚动条位于“North-East”, “South-West”处的水平滚动条和“South-East”处的空方格。 man page上有一个相关的例子。

我认为我可以引用手册页示例作为合理使用(注意它的版权 © 1995-1997 Roger E. Critchlow Jr. 版权所有 © 1996 Sun Microsystems, Inc.)。

# Make the widgets
toplevel .t
text .t.txt -wrap none -xscroll {.t.h set} -yscroll {.t.v set}
scrollbar .t.v -orient vertical   -command {.t.txt yview}
scrollbar .t.h -orient horizontal -command {.t.txt xview}

# Lay them out
grid .t.txt .t.v -sticky nsew
grid .t.h        -sticky nsew

# Tell the text widget to take all the extra room
grid rowconfigure    .t .t.txt -weight 1
grid columnconfigure .t .t.txt -weight 1

不过,您需要自己翻译成 Perl-Tk。在 TkDocs 上有一些与 Perl-Tk 相关的关于网格的讨论(尽管不是专门关于滚动条)here,这可能会让您入门。 “学习 Perl/Tk”示例章节 Geometry Management 还讨论了 grid

哦!您还希望在第四个方格中有一个调整大小的控件。在 Tcl/T(t)k 中,它被称为 ttk::sizegrip 并记录在 here 中。我自己从未使用过它(因为还有其他方法可以调整窗口大小)并且不知道它是否在 Perl-Tk 中。如果不是,则有一个 wiki page 讨论如何伪造它(同样,我自己从未尝试过该代码)。

【讨论】:

  • grid 确实是解决这个问题的方法,而滚动条问题是最初的激励用例;在它被发明之前,你必须在pack 中使用frames 作为间隔来做一些讨厌的把戏,而且真的很难做到正确。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-25
  • 2012-07-11
  • 2016-04-28
  • 2018-03-12
  • 2021-10-11
  • 1970-01-01
相关资源
最近更新 更多