0

我有一个 GUI 应用程序,其中底部有一个 BOTTOM 滚动条和一个 BOTTOM 状态栏。我想以这样的方式对齐它们,使滚动条位于底部的状态栏上方,如下所示(在官方记事本中): 在此处输入图像描述

这里状态栏在底部,滚动条在顶部。

但是我所做的是: 在此处输入图像描述

这里状态栏在顶部,滚动条在底部。

我也尝试了 anchor=S 但这也没有奏效并抛出了相同的结果。

代码:(状态栏)

    statusbar = Frame(textarea)
    statusbar.pack(side=BOTTOM, fill=X)
    statusbar_Content1 = Label(statusbar, anchor=SW, width=18, text="Ln 1, col 1")
    statusbar_Content2 = Label(statusbar, anchor=SW, text="100%")
    statusbar_Content3 = Label(statusbar, anchor=SW, width=15, text="Windows (CRLF)")
    statusbar_Content4 = Label(statusbar, anchor=SW, width=13, text="UTF-8")
    statusbar_Content4.pack(side=RIGHT)
    Label(statusbar, anchor=SW, text="|", state=DISABLED).pack(side=RIGHT)
    statusbar_Content3.pack(side=RIGHT)
    Label(statusbar, anchor=SW, text="|", state=DISABLED).pack(side=RIGHT)
    statusbar_Content2.pack(side=RIGHT)
    Label(statusbar, anchor=SW, text="|", state=DISABLED).pack(side=RIGHT)
    statusbar_Content1.pack(side=RIGHT)
    Label(statusbar, anchor=SW, text="|", state=DISABLED).pack(side=RIGHT)

代码:(滚动条)

Scroll2 = Scrollbar(root, orient=HORIZONTAL)
Scroll2.pack(side=BOTTOM, fill=X)
Scroll2.config(command=textarea.xview)

代码:(滚动条与文本小部件绑定)

textarea = Text(root, font=fontsmain, yscrollcommand=Scroll.set,xscrollcommand=Scroll2.set, undo=True)
textarea.pack(expand=True, fill=BOTH)

结论 :

有什么方法可以设置这些,使 SCROLLBAR 高于 STATUSBAR 反之亦然?

4

1 回答 1

1

pack通过将小部件放置在未分配空间的一侧来工作。这意味着结果取决于小部件的打包顺序。这称为堆叠顺序

例如,如果您首先打包滚动条,它将被放置在窗口的最底部,因为尚未为任何内容分配空间。当您稍后调用pack状态栏时,窗口的最底部已经被分配,因此它将被放置在滚动条上方可用空间的底部。

知道了这一点,当您更改调用顺序时pack,您就更改了窗口小部件出现的顺序。因此,一个简单的解决方案是确保在打包滚动条之前打包状态栏。

pack还有一些选项可让您指定小部件是在排序中的其他小部件之前还是之后。例如,您可以打包滚动条,然后打包状态栏,但告诉它以堆叠顺序出现在滚动条之前。当您使用side='bottom'时,这将导致状态栏出现在滚动条下方。

请注意以下三个示例之间的区别:

statusbar.pack(side="bottom", fill="x")
scrollbar.pack(side="bottom", fill="x")

截图,状态栏优先

scrollbar.pack(side="bottom", fill="x")
statusbar.pack(side="bottom", fill="x")

截图,滚动条优先

scrollbar.pack(side="bottom", fill="x")
statusbar.pack(side="bottom", fill="x", before=scrollbar)

屏幕截图,使用

于 2021-08-04T17:14:28.640 回答