此代码创建一个带有文本框和垂直滚动条的窗口。如果通过拖动窗口边缘来更改窗口的宽度,并且宽度减小到某个阈值(约 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()
这是因为
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()