Python_给tkinter的frame加滚动条

问题背景:当界面需要显示的内容较多时,需要用到滚动条Scrollbar,官方文档说Scrollbar只能与以下控件(canvas, entry, listbox, text)相结合。但是,如果我想让Scrollbar和frame相结合呢?


解决办法是:把frame放在canvas里面(比如填满整个canvas),canvas与scrollbar结合,这样滚动canvas就等于滚动frame了。

举个栗子

canvas=Canvas(root,width=200,height=180,scrollregion=(0,0,520,520)) #创建canvas
canvas.place(x = 75, y = 265) #放置canvas的位置
frame=Frame(canvas) #把frame放在canvas里
frame.place(width=180, height=180) #frame的长宽,和canvas差不多的
vbar=Scrollbar(canvas,orient=VERTICAL) #竖直滚动条
vbar.place(x = 180,width=20,height=180)
vbar.configure(command=canvas.yview)
hbar=Scrollbar(canvas,orient=HORIZONTAL)#水平滚动条
hbar.place(x =0,y=165,width=180,height=20)
hbar.configure(command=canvas.xview)
canvas.config(xscrollcommand=hbar.set,yscrollcommand=vbar.set) #设置  
canvas.create_window((90,240), window=frame)  #create_window

当然,如果是纯文本的滚动,可以选择scrolltext组件,它的函数和text一样,可以参考一下这个链接 https://www.jianshu.com/p/abea88607525

  • 18
    点赞
  • 111
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值