tkinter学习-滚动条

Posted 山丘i

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tkinter学习-滚动条相关的知识,希望对你有一定的参考价值。

阅读目录

  • Listbox 以列表的形式显示
  • Scrollbar 滚动条
  • Scale 更滚动条很相似,但更精准

Listbox

   说明:列表框控件,在Listbox窗口小部件是用来显示一个字符串列表给用户

  属性:创建一个Listbox组件的时候,它是空的,首先是添加文本进去

  insert():有两个参数,第一个是插入的索引号,第二个是插入的字符串 

from tkinter import *
root = Tk()
var = StringVar()
var.set([\'A\',\'B\',\'C\',\'D\'])   #定义一个变量,赋值,然后再给listvariable
thelb = Listbox(root,listvariable=var).pack()
mainloop()

结果:

    

  当然,使用delete()方法是删除列表中的项目,重用的操作是删除所有的项目:Listbox.delete(0,END)

  也可以删除指定的项目,用ACTIVE

from tkinter import *
root = Tk()
thelb = Listbox(root,height=15)  #这里表示显示15行
thelb.pack()
for i in range(100):
    thelb.insert(END,i)
#这个ACTIVE是一个特殊的索引号,表示当前被选中的项目
thebu = Button(root,text=\'删除\',command = lambda x = thelb: x.delete(ACTIVE)).pack()
mainloop()

结果:

      

  利用for循环插入数据,这里获取光标所选中的东西用 curselection()方法

from tkinter import *
root = Tk()
var1 = StringVar()  #定义一个变量用来接收
Label(root,bg=\'yellow\',textvariable=var1,width=8).pack()
thelb = Listbox(root)
thelb.pack()
for i in [\'王昭君\',\'庄周\',\'吕布\',\'亚瑟\']:
    thelb.insert(END,i)
def show():
    value = thelb.get(thelb.curselection())    #获取光标在这个listbox上选定的值
    var1.set(value)                 
Button(root,text=\'获取\',command=show).pack()
mainloop()

 结果:

    

Scrollbar:

   说明:滚动条控件,当内容超过可视化区域时使用,如列表框

  属性:为了在某个组件上安装滚动条,需要做这两件事情:

  1,设置该组件的 yscrollbarcommand 选项为 Scrollbar组件的set() 方法

  2,设置Scrollbar 组件的 command 选项为该组件的 yview() 方法

from tkinter import *
root = Tk()
sb = Scrollbar(root)
sb.pack(side=RIGHT,fill=Y)
lb = Listbox(root,yscrollcommand= sb.set)
for i in range(1000):
    lb.insert(END,i)
lb.pack(side=RIGHT)
sb.config(command=lb.yview)
mainloop()

 结果:

    

Scale:

  说明:范围控件,显示一个数值刻度,为输出限定范围的数字区间

  属性:指定一个范围,用from_,to,

 

from tkinter import *
root = Tk()
Scale(root,from_=0,to=42).pack()
Scale(root,from_=0,to=200,orient = HORIZONTAL).pack()
mainloop()

 结果:

    

  当然,还有其他属性,orient,控制滑块的方位,HORIZONTAL(水平),VERTICAL(垂直)

  通过resolution选项可以控制分辨率(步长),通过tickinterval选项控制刻度

from tkinter import *
root = Tk()
l = Label(root,text=\'\',bg=\'yellow\',width=10)
l.pack()
def show(v):
    l.config(text=\'长度为:\' + v)  #这个是改变label标签的text
Scale(root,from_=0,to=66,tickinterval=3,resolution=3,length=200,orient=VERTICAL).pack()
Scale(root,from_=0,to=100,tickinterval=5,resolution=5,\\
      length=500,orient=HORIZONTAL,command=show).pack()  #这个时候会产生一个参数,传给函数就行
mainloop()

 

 结果:

    

参考文献:

  小甲鱼的python教学视频

 

以上是关于tkinter学习-滚动条的主要内容,如果未能解决你的问题,请参考以下文章

更新 tkinter 中的滚动条

如何为标签列表制作“滚动条”? python tkinter [复制]

Tkinter 如何正确设置组合框滚动条的样式

Python 中 Tkinter 画布上 .jpg 图像的滚动条

在 tkinter 中更改滚动条的外观(使用 ttk 样式)

在 tkinter 滚动条上显示串行传入数据