Python 在tkinter中使用带画布的滚动条
我试着把一个窗口放在一起,显示一堆由dict生成的标签。我很难让滚动条正常工作。当我调整窗口大小时,它们不会粘在框架的侧面,而且我无法让画布响应滚动命令。我需要窗口来支持大量标签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):
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(“,在鼠标滚轮上)