我正在尝试使用 Perl Tk 创建一个简单的记事本,如 GUI。我使用Scrolled小部件创建了一个带有两个滚动条的Text小部件——一个在右侧,一个在底部。两个滚动条相遇的地方是这样的:
但是我想让它看起来像微软在“记事本”应用程序中看到的那样。这就是我想要的:
如您所见,两个滚动条相交的地方现在有一个“空方格”。记事本的另一个特点是这个“正方形”可以用来调整窗口大小。我希望能够实现同样的目标。
我该怎么做呢?
谢谢!
诀窍是使用几何管理器放置小部件grid
,它本质上创建一个(大小不一的)4x4 网格,文本小部件位于“North-West”,垂直滚动条位于“North-East”,水平滚动条位于“South -West”,以及“South-East”的空旷广场。手册页上有一个相关示例。
我认为我可以引用手册页示例作为合理使用(注意它的版权所有 © 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 相关的网格讨论(尽管不是专门关于滚动条),可能会让您入门。“学习 Perl/Tk”示例章节几何管理也讨论了grid
.
哦!您还希望在第四个方格中有一个调整大小的控件。在 Tcl/T(t)k 中,它被称为 attk::sizegrip
并且在此处记录。我自己从未使用过它(因为还有其他方法可以调整窗口大小)并且不知道它是否在 Perl-Tk 中。如果不是,则有一个wiki 页面讨论如何伪造它(同样,我自己从未尝试过该代码)。