python(listbox)

Listbox:列表框

Scrollbar: 滚动条

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

滑动条的初始位置设置:set()方法

orient:设置滚动条水平(HORIZONTAL)还是竖直显示,默认是竖直

 

EG1:在Text组件中创建水平,竖直的滚动条

 

 

EG2:

# Listbox与Scrollbar绑定

from tkinter import *

root = Tk()

root.geometry('200x100')

scrollbar1 = Scrollbar(root)

scrollbar1.pack(side=RIGHT, fill=Y)

listbox1 = Listbox(root)

# 指定Listbox的yscrollbar的回调函数为Scrollbar的set

listbox1["yscrollcommand"] = scrollbar1.set

listbox1.pack(side=LEFT)

# 指定Scrollbar的command的回调函数是Listbar的yview

scrollbar1["command"] = listbox1.yview

for i in range(40):

    listbox1.insert(END, str(i))

root.mainloop()

补充1. yscrollcommand属性:如果你想让用户垂直滚动列表框,你可以链接你的listbox widg et到垂直滚动条。

   2. 将列表框垂直滚动,将相关的垂直滚动条的命令选项设置为该方法。

EG3:

yscrollcommad与scrollbar的set解除绑定。

from tkinter import *



root = Tk()

listbox1 = Listbox(root)

scrollbar1 = Scrollbar(root)

scrollbar1.pack(side=RIGHT, fill=Y)

# 解除Listbox的yscrollcommand与Scrollbar的set绑定

# lb['yscrollcommand'] = sl.set

for i in range(100):

    listbox1.insert(END, str(i))

# 使用索引为50的元素可见

listbox1.see(50)

listbox1.pack(side=LEFT)

scrollbar1['command'] = listbox1.yview

root.mainloop()

 

 

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

 

EG4:

解除Scrollbar的command与Listbox的yview的关系

from tkinter import *

root = Tk()

listbox1 = Listbox(root)

scrollbar = Scrollbar(root)

scrollbar.pack(side = RIGHT,fill = Y)

#下面的这句是关键:指定Listbox的yscrollbar的回调函数为Scrollbar的set

listbox1['yscrollcommand'] = scrollbar.set

for i in range(100):

    listbox1.insert(END,str(i*100))

#使用索引为50的元素可见

listbox1.see(50)

listbox1.pack(side = LEFT)

#解除Scrollbar的command与Listbox的yview的关系

#sl['command'] = lb.yview

root.mainloop()

实行结果:

运行程序,Scrollbarslider已经到了50位置,也就是说Scrollbar响应了Listbox视图改变的消息,调用 了自己的set函数。
进行操作:拖动slder或点击up/down按钮,Listbox的视图没有任何反应,即Listbox不会响应Scrollbar的消息了。

你可能感兴趣的:(笔记)