Python 在tkinter中使用带画布的滚动条

Python 在tkinter中使用带画布的滚动条,python,tkinter,Python,Tkinter,我试着把一个窗口放在一起,显示一堆由dict生成的标签。我很难让滚动条正常工作。当我调整窗口大小时,它们不会粘在框架的侧面,而且我无法让画布响应滚动命令。我需要窗口来支持大量标签 from Tkinter import * from math import floor bits = {} #the dict is then built class Bitbox(Canvas): def __init__(self, parent, bitdict, *args, **kwargs):

我试着把一个窗口放在一起,显示一堆由dict生成的标签。我很难让滚动条正常工作。当我调整窗口大小时,它们不会粘在框架的侧面,而且我无法让画布响应滚动命令。我需要窗口来支持大量标签

from Tkinter import *
from math import floor

bits = {}

#the dict is then built

class Bitbox(Canvas):
def __init__(self, parent, bitdict, *args, **kwargs):
    Canvas.__init__(self, parent, background="black")
    self.bitdict = bitdict
    self.parent = parent
    self.lbllist = []

    n=0
    for i in bitdict.keys():
        label = Label(self, text=i, bg='black', fg='green')
        n += 1
        label.grid(row = ((n-1)%30), column=int(floor((n-1)/30)))
        self.lbllist.append(label)


def main():

    root = Tk()
    frame = Frame(root)
    frame.grid(sticky=N+S+E+W)
    bts = Bitbox(frame, bits)
    bts.grid(row=0, column=0)
    vbar = Scrollbar(frame, orient=VERTICAL)
    vbar.grid(row=0, column=1, sticky=N+S)
    vbar.config(command=bts.yview)
    hbar = Scrollbar(frame, orient=HORIZONTAL)
    hbar.grid(row=1, column=0, columnspan=2, sticky=W+E)
    bts.config(xscrollcommand=hbar.set)
    hbar.config(command=bts.xview)
    bts.config(yscrollcommand=vbar.set)
    bts.config(scrollregion=(0,0,500,1000))

    root.mainloop()

很明显,我对这一切都是新手。我完全有可能对这些小部件的交互方式有一个根本性的误解。非常感谢您的帮助。

要让滚动条对鼠标做出反应,请将鼠标绑定到滚动条,如下所示:

def on_mousewheel(event):
    bts.yview_scroll(-1*(event.delta/120), "units")


def main():
    global bts

    #your code...

    root.bind_all("<MouseWheel>",on_mousewheel)
鼠标滚轮上的def(事件): bts.yview\U滚动条(-1*(事件增量/120),“单位”) def main(): 全球基站 #你的代码。。。 root.bind_all(“,在鼠标滚轮上)