窗口宽度超过阈值时垂直滚动条消失

问题描述 投票:0回答:1

此代码创建一个带有文本框和垂直滚动条的窗口。如果通过拖动窗口边缘来更改窗口的宽度,并且宽度减小到某个阈值(约 660 像素)以下,则垂直滚动条会消失。

达到此阈值时,是什么导致垂直滚动条被推出窗口?我没有在这里定义任何小部件的宽度。我希望随着窗口宽度的减小,文本框会变得越来越小。

import tkinter

window = tkinter.Tk()

text_box = tkinter.Text(master = window)
text_box.pack(side = "left", fill = "both", expand = True)

vertical_scrollbar = tkinter.Scrollbar(master = window, command = text_box.yview)
vertical_scrollbar.pack(side = "right", fill = "y")

window.mainloop()
python tkinter
1个回答
0
投票

这是因为

pack
尝试将所有小部件并排放置,并尝试为其中的所有小部件分配空间,并且当您的宽度变为数字时,滚动条不在可见区域中窗户。

使用

grid
和您的小部件,您可以使其保持可见:

import tkinter

window = tkinter.Tk()

text_box = tkinter.Text(master=window)
text_box.grid(row=0, column=0, sticky="nsew")

vertical_scrollbar = tkinter.Scrollbar(master=window, command=text_box.yview)
vertical_scrollbar.grid(row=0, column=1, sticky="ns")

text_box.configure(yscrollcommand=vertical_scrollbar.set)

window.grid_rowconfigure(0, weight=1)
window.grid_columnconfigure(0, weight=1)

window.mainloop()

更新:

根据#jasonharper 评论,首先打包滚动条可以保持其可见:

import tkinter

window = tkinter.Tk()

vertical_scrollbar = tkinter.Scrollbar(master = window)
vertical_scrollbar.pack(side = "right", fill = "y")

text_box = tkinter.Text(master = window)
text_box.pack(side = "left", fill = "both", expand = True)

window.mainloop()
© www.soinside.com 2019 - 2024. All rights reserved.