tkinter: 滚动frame (通过canvas+scrollbar)

您所在的位置:网站首页 可设置滚动条的控件 tkinter: 滚动frame (通过canvas+scrollbar)

tkinter: 滚动frame (通过canvas+scrollbar)

2024-07-16 04:21| 来源: 网络整理| 查看: 265

from tkinter import * def data(): for i in range(100): Label(rollFrame,text=i).grid(row=i,column=0) Label(rollFrame,text="my text"+str(i)).grid(row=i,column=1) Label(rollFrame,text="..........").grid(row=i,column=2) # 少了这个就滚动不了 def myfunction(event): canvas.configure(scrollregion=canvas.bbox("all"),width=200,height=200) root=Tk() root.wm_geometry("800x600") canvas=Canvas(root) # 创建画布 canvas.place(x=0,y=0,height=300,width=500) myscrollbar=Scrollbar(root,orient="vertical",command=canvas.yview) #创建滚动条 myscrollbar.place(x=500,y=0,height=300) canvas.configure(yscrollcommand=myscrollbar.set) rollFrame=Frame(canvas) # 在画布上创建frame canvas.create_window((0,0),window=rollFrame,anchor='nw') # 要用create_window才能跟随画布滚动 rollFrame.bind("",myfunction) data() root.mainloop()

在画布上放置frame,为什么要使用create_window?        

如果您通过 pack, place, grid 将一个frame 放置到画布上 ,frame会出现在画布内,但不会成为画布的一部分。 这意味着:如果画布绑定了滚动条,框架将不会跟随画布滚动。

通过使用create_window,使frame成为画布的一部分,就可以像任何其他画布对象一样操作和滚动了。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3