gpt4 book ai didi

python - Tkinter 滚动条

转载 作者:行者123 更新时间:2023-11-30 22:26:16 25 4
gpt4 key购买 nike

如果我在 scrollbar.pack() 之前调用 text_area.pack() (即切换它们),滚动条不会显示。这是为什么?如果我要创建一个更大的程序,我绝对没有机会找出问题所在。

from tkinter import *
import tkinter.filedialog



root = Tk()
root.geometry("200x100")
frame = Frame(root,width=150, height=90)
frame.pack()
scrollbar = Scrollbar(frame)
text_area = Text(frame, width=200, height=50,yscrollcommand=scrollbar.set)
scrollbar.config(command=text_area.yview)
scrollbar.pack(side="right", fill="y")
text_area.pack()
root.mainloop()

最佳答案

滚动条不显示的原因是根本没有空间容纳它。您指定的窗口大小为 200x100 像素,内部框架大小为 150x90 像素,但您试图在该空间中放置一个更大的文本小部件。您指定的大小为 200x50 个字符(大约 1400x750,具体取决于您使用的字体),这对于可用空间来说太宽了。

方式pack工作原理是它查看可用空间,将小部件放入该空间,然后从下一个小部件的可用空间中减去该小部件所需的空间。因为您将文本小部件放在第一位,并且它请求的空间超过了可用空间,所以它耗尽了所有可用空间。然后,当您调用pack时在滚动条上,根本没有地方可以放置它。

当您颠倒顺序时,滚动条仅占用可用空间的一小部分,因此有空间容纳文本小部件。

最好的解决方案是更改调用 pack 的顺序。一般来说,最好调用pack这样你调用的最后一个小部件 pack on 是“英雄”——占据所有剩余空间并随着窗口增大或缩小而增大或缩小的那个。通常这是一个文本小部件或 Canvas 小部件,或者本身包含许多小部件的框架。

tkinter 成功的关键是不要尝试强制 tkinter 小部件或窗口以像素为单位的特定大小(也许 Canvas 除外)。相反,要么让小部件使用它的默认大小(特别是按钮和滚动条),要么选择合理的默认值(行数和/或列数)。然后,Tkinter 将根据字体、屏幕分辨率和其他因素计算出适合所有内容的正确尺寸。

关于python - Tkinter 滚动条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47261628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com