1
我搜索了四周,似乎无法找到我的问题的答案。我试图为下面的代码创建一个工作滚动条,似乎无法让它工作。该问题似乎与OnFrameConfigure方法。我在其他地方看到的方法应该是def OnFrameConfigure(event):
但是当我放置(event)
部分进入我的方法不工作,除非我写的函数class
在类中为画布编写tkinter滚动条
class Main(tk.Tk):
def __init__(self, *args, **kwargs):
'''This initialisation runs the whole program'''
#tk.Tk.__init__(self, *args, **kwargs)
main = tk.Tk()
canvas = tk.Canvas(main)
scroll = tk.Scrollbar(main, orient='vertical', command=canvas.yview)
canvas.configure(yscrollcommand=scroll.set)
frame = tk.Frame(canvas)
scroll.pack(side='right', fill='y')
canvas.pack(side='left', fill='both', expand='yes')
canvas.create_window((0,0), window=frame)
frame.bind('<Configure>', self.OnFrameConfigure(parent=canvas))
for i in range(100):
tk.Label(frame, text='I am a Label').pack()
main.mainloop()
def OnFrameConfigure(self, parent):
'''Used to allowed scrolled region in a canvas'''
parent.configure(scrollregion=parent.bbox('all'))
可以说,我需要'def OnFrameConfigure'为多个小部件和那里前面需要'(家长)'参数我怎么加这个?然而,我尝试了lambda,并且这似乎只适用于使用'command'的东西。 – firebird92
@ firebird92:你会使用lambda; lambda没有什么特别之处,只能使用command属性。请参阅http://stackoverflow.com/q/28995395/7432,或者在许多示例中搜索此网站以查找'[tkinter] bind lambda'。 –