文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

tkinter -- Scrollbar

2023-01-30 22:03

关注

Scrollbar(滚动条),可以单独使用,但最多的还是与其它控件(Listbox,Text,Canva 等)结合使用

创建一个Scrollbar

代码:

import tkinter as tk

root = tk.Tk()
tk.Scrollbar(root).pack()
root.mainloop()

效果:

blob.png

显示了一个 Scrollbar,但什么也做不了,无法拖动 slider



通过 set 方法来设置 slider 的位置

使用水平滚动条,通过 set 将值设置为(0.5,1),即 slider 占整个 Srollbar 的一半

代码:

import tkinter as tk

root = tk.Tk()
s = tk.Scrollbar(root, orient='horizontal')
s.set(0.5, 1)
s.pack()
root.mainloop()

结果:

blob.png



单独使用还是比较少见,大部分应用还是与其它控件的绑定,以下是将一个 Listbox与 Scrollbar 绑定的例子

代码:

import tkinter as tk

root = tk.Tk()
lb = tk.Listbox(root)
sl = tk.Scrollbar(root)

# side 指定 Scrollbar 为居右;fill 指定填充满整个剩余区域,
# 到 WM 在时候再详细介绍这几个属性
sl.pack(side='right', fill='y')

# 指定 Listbox 的 yscrollbar 的回调函数为 Scrollbar 的 set
lb['yscrollcommand'] = sl.set
for i in range(100):
    lb.insert(tk.END,str(i))
# side 指定 Listbox 为居左
lb.pack(side='left')

# 指定 Scrollbar 的 command 的回调函数是 Listbar 的 yview
sl['command'] = lb.yview
root.mainloop()

结果:

blob.png




这样理解二者之间的关系:当 Listbox 改变时,Scrollbar 调用 set 以改变 slder 的位置;当 Scrollbar 改变了 slider 的位置时,Listbox 调用 yview 以显示新的 list 项,为了演示这两种关系先将 yscrollcommad 与 scrollbar 的 set 解除绑定,看看会有什么效果。

代码;

import tkinter as tk

root = tk.Tk()
lb = tk.Listbox(root)
sl = tk.Scrollbar(root)

# side 指定 Scrollbar 为居右;fill 指定填充满整个剩余区域,
# 到 WM 在时候再详细介绍这几个属性
sl.pack(side='right', fill='y')


for i in range(100):
    lb.insert(tk.END,str(i))
# 使用索引为50的元素可见
lb.see(50)
lb.pack(side='left')

# 指定 Scrollbar 的 command 的回调函数是 Listbar 的 yview
sl['command'] = lb.yview
root.mainloop()

结果:

blob.png

运行结果,Listbox 显示了50项,即 Listbox 的视图已经到50了,但 Scrollbar 的 slider仍旧位于0处。也就是说 Scroolbar 没有收到 set的命令。即说明解除此绑定,Scrollbar 将不再响应 Listbox 视图改变的消息。但仍可以使用 Scrollbar 的 slider 来移动 Listbox 的视图



再测试一下,解除 Scrollbar 的 command 与 Listbox 的 yview 的关系

代码:

import tkinter as tk

root = tk.Tk()
lb = tk.Listbox(root)
sl = tk.Scrollbar(root)

# side 指定 Scrollbar 为居右;fill 指定填充满整个剩余区域,
# 到 WM 在时候再详细介绍这几个属性
sl.pack(side='right', fill='y')

# 指定 Listbox 的 yscrollbar 的回调函数为 Scrollbar 的 set
lb['yscrollcommand'] = sl.set

for i in range(100):
    lb.insert(tk.END,str(i*100))
# 使用索引为50的元素可见
lb.see(50)
lb.pack(side='left')


# 解除 Scrollbar 的 command 与 Listbox 的 yview 的关系
# sl['command'] = lb.yview
root.mainloop()

结果

blob.png

运行程序,Scrollbar 的 slider 已经到了50位置,也就是说 Scrollbar 响应了 Listbox 视图改变的消息,调用 了自己的 set 函数。

进行操作:拖动 slder 或点击 up/down 按钮,Listbox 的视图没有任何反应,即 Listbox不会响应 Scrollbar 的消息了。


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯