我正在尝试使用以下代码,但我遇到了问题,具体取决于我选择谁成为我的滚动条的主人。
我不知道该尝试什么,因为我找不到任何有类似问题的人。
fr = Frame(root)
fr.grid(row=0, column=0, sticky=N)
fr2 = Frame(root, height=34)
fr2.grid(row=0, column=1, sticky=N)
text_area = Listbox(fr2, width = 28, height= 34)
text_area.grid(row=0, column=0, rowspan=20)
sb = Scrollbar(fr2)
sb.grid(column=1, row=0)
text_area.config(font = ("Courier New", 12), yscrollcommand = sb)
如果我fr2
作为 的主人使用sb
,我的滚动条会显得非常小并且无法滚动text_area
(尽管我的鼠标滚轮和向上/向下键能够滚动。)https://imgur.com/R5WDv87。
如果我使用text_area
它的主人,但是text_area
只是删除https://imgur.com/aXvH1J3。
我该如何解决这个问题?
你必须做两件事才能让滚动条工作:
command
滚动条的选项才能调用set
要滚动的小部件的方法yscrollcommand
小部件的选项才能更新滚动条。此外,列表框中没有任何内容,因此滚动条将不起作用,因为没有可滚动的内容。
对于垂直填充空间的滚动条,sticky
如果您使用grid
. 假设您希望它们具有相同的高度,它还需要跨越与其控制的小部件相同数量的行。
这是一个基于您的代码的工作示例:
from tkinter import *
root = Tk()
fr = Frame(root)
fr.grid(row=0, column=0, sticky=N)
fr2 = Frame(root, height=34)
fr2.grid(row=0, column=1, sticky=N)
text_area = Listbox(fr2, width = 28, height= 34)
text_area.grid(row=0, column=0, rowspan=20)
sb = Scrollbar(fr2, command=text_area.yview)
sb.grid(column=1, row=0, sticky="ns", rowspan=20)
text_area.config(font = ("Courier New", 12), yscrollcommand = sb.set)
for i in range(100):
text_area.insert("end", "item #{}".format(i))
root.mainloop()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句