将小部件插入列表框后,为什么此滚动条不起作用?

时间:2017-08-29 04:23:35

标签: python tkinter scrollbar

基本上,我正在尝试将滚动条添加到包含小部件的窗口。我能够成功地将滚动条添加到Listbox窗口小部件,并在插入内容后,程序按照我想要的方式工作。但是,当我将小部件放入Listbox时,我遇到了问题。滚动条出现但似乎已禁用。

 from tkinter import *

 root = Tk()
 root.geometry("640x480")
 root.resizable(0,0)
 myscrollbar = Scrollbar(root)
 myscrollbar.pack(side=RIGHT, fill=Y)

 mylist = Listbox(root, width=640, height=480, yscrollcommand=myscrollbar.set)
 mylist.pack(fill=BOTH, expand=True)





 for x in range(1, 101):
    mylist.insert(END, Label(mylist, text="Label: "+str(x)).grid(row=x, column=0))

 myscrollbar.config(command = mylist.yview)

 root.mainloop()

任何修复此代码的方法?

1 个答案:

答案 0 :(得分:0)

from tkinter import *

def myScrollcmd(event):
    mycanvas.config(scrollregion=mycanvas.bbox('all'))    

root = Tk()
mycanvas = Canvas(root)
mycanvas.pack(fill=BOTH, expand=True)
myFrame = Frame(mycanvas)
mycanvas.create_window((0, 0), window=myFrame, anchor=NW)
myScrollbar = Scrollbar(mycanvas, orient=VERTICAL, command=mycanvas.yview)
myScrollbar.pack(side=RIGHT, fill=Y)
mycanvas.config(yscrollcommand=myScrollbar.set)
mycanvas.bind("<Configure>", myScrollcmd)

for x in range(100):
    Label(myFrame, text="Text "+str(x)).pack()

root.mainloop()

这很有效。但是,有一个问题可能不是主要问题。问题是,当我的光标在画布上,并且我移动鼠标滚轮时,滚动条不会移动。但是,当我的光标位于滚动条顶部时,滚动条会随着我的鼠标滚轮移动。我可以拖动滚动框上下滚动并使用滚动按钮上下滚动,但鼠标滚轮仅在我的光标悬停在滚动条小部件上时才有效。