码迷,mamicode.com
首页 > 其他好文 > 详细

Tkinter教程之Scrollbar篇

时间:2014-09-21 12:56:40      阅读:291      评论:0      收藏:0      [点我收藏+]

标签:blog   http   os   使用   ar   for   art   sp   问题   

本文转载自:http://blog.csdn.net/jcodeer/article/details/1811319

‘‘‘Tkinter教程之Scrollbar篇‘‘‘
bubuko.com,布布扣#Scrollbar(滚动条),可以单独使用,但最多的还是与其它控件(Listbox,Text,Canva等)结合使用
bubuko.com,布布扣‘‘‘1创建一个Scrollbar‘‘‘
bubuko.com,布布扣from Tkinter import *
bubuko.com,布布扣root = Tk()
bubuko.com,布布扣Scrollbar(root).pack()
bubuko.com,布布扣root.mainloop()
bubuko.com,布布扣#显示了一个Scrollbar,但什么也做不了,无法拖动slider。
bubuko.com,布布扣from Tkinter import *
bubuko.com,布布扣root = Tk()
bubuko.com,布布扣sl = Scrollbar(root)
bubuko.com,布布扣sl.set(0.5,0)
bubuko.com,布布扣sl.pack()
bubuko.com,布布扣root.mainloop()
bubuko.com,布布扣‘‘‘2.通过set方法来设置slider的位置‘‘‘
bubuko.com,布布扣#使用水平滚动条,通过set将值设置为(0.5,1),即slider占整个Srollbar的一半
bubuko.com,布布扣from Tkinter import *
bubuko.com,布布扣root = Tk()
bubuko.com,布布扣sl = Scrollbar(root,orient = HORIZONTAL)
bubuko.com,布布扣sl.set(0.5,1)
bubuko.com,布布扣sl.pack()
bubuko.com,布布扣root.mainloop()
bubuko.com,布布扣‘‘‘3.使用回调函数(不建议这样使用)‘‘‘
bubuko.com,布布扣# -*- coding: cp936 -*-
bubuko.com,布布扣from Tkinter import *
bubuko.com,布布扣root = Tk()
bubuko.com,布布扣def scrollCall(moveto,pos):
bubuko.com,布布扣    #如何得到两个参数:使用如下打印中的信息,可以看到解释器传给scrollCall函数的两个参数,一个为
bubuko.com,布布扣    #moveto,参考手册可以得知,它是当拖动slider时调用的函数;另一个参数为slider的当前位置,我们
bubuko.com,布布扣    #可以通过set函数来设置slider的位置,因此使用这个pos就可以完成控制slider的位置。
bubuko.com,布布扣    #print moveto,pos
bubuko.com,布布扣    sl.set(pos,0)
bubuko.com,布布扣    print sl.get()
bubuko.com,布布扣sl = Scrollbar(root,orient = HORIZONTAL,command = scrollCall)
bubuko.com,布布扣sl.pack()
bubuko.com,布布扣root.mainloop()
bubuko.com,布布扣#这样还有一个严重问题,只能对其进行拖动。对两个按钮及pagedwon/pageup的响应,由于up按钮响应的为三个参数,故会出
bubuko.com,布布扣#现异常。这个例子只是用来说明command属性是可用的,如果喜欢自己可以处理所有的消息,将scrollCall是否可以改为变参数函数?
bubuko.com,布布扣#对于不同的输入分别进行不同的处理。
bubuko.com,布布扣
bubuko.com,布布扣‘‘‘4.单独使用还是比较少见,大部分应用还是与其它控件的绑定,以下是将一个Listbox与Scrollbar绑定的例子‘‘‘
bubuko.com,布布扣# -*- coding: cp936 -*-
bubuko.com,布布扣from Tkinter import *
bubuko.com,布布扣root = Tk()
bubuko.com,布布扣lb = Listbox(root)
bubuko.com,布布扣sl = Scrollbar(root)
bubuko.com,布布扣sl.pack(side = RIGHT,fill = Y)
bubuko.com,布布扣#side指定Scrollbar为居右;fill指定填充满整个剩余区域,到WM在时候再详细介绍这几个属性。
bubuko.com,布布扣#下面的这句是关键:指定Listbox的yscrollbar的回调函数为Scrollbar的set
bubuko.com,布布扣lb[‘yscrollcommand‘] = sl.set
bubuko.com,布布扣for i in range(100):
bubuko.com,布布扣    lb.insert(END,str(i))
bubuko.com,布布扣#side指定Listbox为居左
bubuko.com,布布扣lb.pack(side = LEFT)
bubuko.com,布布扣#下面的这句是关键:指定Scrollbar的command的回调函数是Listbar的yview
bubuko.com,布布扣sl[‘command‘] = lb.yview
bubuko.com,布布扣root.mainloop()
bubuko.com,布布扣‘‘‘5.这样理解二者之间的关系:当Listbox改变时,Scrollbar调用set以改变slder的位置;当Scrollbar改变了slider的位置时,Listbox调用yview以显示新的list项,为了演示这两种关系先将yscrollcommad与scrollbar的set解除绑定,看看会有什么效果‘‘‘
bubuko.com,布布扣# -*- coding: cp936 -*-
bubuko.com,布布扣from Tkinter import *
bubuko.com,布布扣root = Tk()
bubuko.com,布布扣lb = Listbox(root)
bubuko.com,布布扣sl = Scrollbar(root)
bubuko.com,布布扣sl.pack(side = RIGHT,fill = Y)
bubuko.com,布布扣#解除Listbox的yscrollcommand与Scrollbar的set绑定
bubuko.com,布布扣#lb[‘yscrollcommand‘] = sl.set
bubuko.com,布布扣for i in range(100):
bubuko.com,布布扣    lb.insert(END,str(i))
bubuko.com,布布扣#使用索引为50的元素可见
bubuko.com,布布扣lb.see(50)
bubuko.com,布布扣lb.pack(side = LEFT)
bubuko.com,布布扣sl[‘command‘] = lb.yview
bubuko.com,布布扣root.mainloop()
bubuko.com,布布扣#运行结果,Listbox显示了50项,即Listbox的视图已经到50了,但Scrollbar的slider仍旧位于0处。也就是说Scroolbar没有收到set
bubuko.com,布布扣#的命令。即说明解除此绑定,Scrollbar将不再响应Listbox视图改变的消息。但仍可以使用Scrollbar的slider来移动Listbox的视图。
bubuko.com,布布扣
bubuko.com,布布扣‘‘‘6.再测试一下,解除Scrollbar的command与Listbox的yview的关系,测试代码如下:‘‘‘
bubuko.com,布布扣# -*- coding: cp936 -*-
bubuko.com,布布扣from Tkinter import *
bubuko.com,布布扣root = Tk()
bubuko.com,布布扣lb = Listbox(root)
bubuko.com,布布扣sl = Scrollbar(root)
bubuko.com,布布扣sl.pack(side = RIGHT,fill = Y)
bubuko.com,布布扣#下面的这句是关键:指定Listbox的yscrollbar的回调函数为Scrollbar的set
bubuko.com,布布扣lb[‘yscrollcommand‘] = sl.set
bubuko.com,布布扣for i in range(100):
bubuko.com,布布扣    lb.insert(END,str(i*100))
bubuko.com,布布扣#使用索引为50的元素可见
bubuko.com,布布扣lb.see(50)
bubuko.com,布布扣lb.pack(side = LEFT)
bubuko.com,布布扣#解除Scrollbar的command与Listbox的yview的关系
bubuko.com,布布扣#sl[‘command‘] = lb.yview
bubuko.com,布布扣root.mainloop()
bubuko.com,布布扣#运行程序,Scrollbar的slider已经到了50位置,也就是说Scrollbar响应了Listbox视图改变的消息,调用 了自己的set函数。
bubuko.com,布布扣#进行操作:拖动slder或点击up/down按钮,Listbox的视图没有任何反应,即Listbox不会响应Scrollbar的消息了。

Tkinter教程之Scrollbar篇

标签:blog   http   os   使用   ar   for   art   sp   问题   

原文地址:http://www.cnblogs.com/LeeZz/p/3984313.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!