Tkinter教程之Scrollbar篇

原创 2007年10月04日 18:58:00
'''Tkinter教程之Scrollbar篇'''
#Scrollbar(滚动条),可以单独使用,但最多的还是与其它控件(Listbox,Text,Canva等)结合使用
'''1创建一个Scrollbar'''
from Tkinter import *
root 
= Tk()
Scrollbar(root).pack()
root.mainloop()
#显示了一个Scrollbar,但什么也做不了,无法拖动slider。
from Tkinter import *
root 
= Tk()
sl 
= Scrollbar(root)
sl.set(
0.5,0)
sl.pack()
root.mainloop()
'''2.通过set方法来设置slider的位置'''
#使用水平滚动条,通过set将值设置为(0.5,1),即slider占整个Srollbar的一半
from Tkinter import *
root 
= Tk()
sl 
= Scrollbar(root,orient = HORIZONTAL)
sl.set(
0.5,1)
sl.pack()
root.mainloop()
'''3.使用回调函数(不建议这样使用)'''
# -*- coding: cp936 -*-
from Tkinter import *
root 
= Tk()
def scrollCall(moveto,pos):
    
#如何得到两个参数:使用如下打印中的信息,可以看到解释器传给scrollCall函数的两个参数,一个为
    #moveto,参考手册可以得知,它是当拖动slider时调用的函数;另一个参数为slider的当前位置,我们
    #可以通过set函数来设置slider的位置,因此使用这个pos就可以完成控制slider的位置。
    #print moveto,pos
    sl.set(pos,0)
    
print sl.get()
sl 
= Scrollbar(root,orient = HORIZONTAL,command = scrollCall)
sl.pack()
root.mainloop()
#这样还有一个严重问题,只能对其进行拖动。对两个按钮及pagedwon/pageup的响应,由于up按钮响应的为三个参数,故会出
#
现异常。这个例子只是用来说明command属性是可用的,如果喜欢自己可以处理所有的消息,将scrollCall是否可以改为变参数函数?
#
对于不同的输入分别进行不同的处理。

'''4.单独使用还是比较少见,大部分应用还是与其它控件的绑定,以下是将一个Listbox与Scrollbar绑定的例子'''
# -*- coding: cp936 -*-
from Tkinter import *
root 
= Tk()
lb 
= Listbox(root)
sl 
= Scrollbar(root)
sl.pack(side 
= RIGHT,fill = Y)
#side指定Scrollbar为居右;fill指定填充满整个剩余区域,到WM在时候再详细介绍这几个属性。
#
下面的这句是关键:指定Listbox的yscrollbar的回调函数为Scrollbar的set
lb['yscrollcommand'= sl.set
for i in range(100):
    lb.insert(END,str(i))
#side指定Listbox为居左
lb.pack(side = LEFT)
#下面的这句是关键:指定Scrollbar的command的回调函数是Listbar的yview
sl['command'= lb.yview
root.mainloop()
'''5.这样理解二者之间的关系:当Listbox改变时,Scrollbar调用set以改变slder的位置;当Scrollbar改变了slider的位置时,Listbox调用yview以显示新的list项,为了演示这两种关系先将yscrollcommad与scrollbar的set解除绑定,看看会有什么效果'''
# -*- coding: cp936 -*-
from Tkinter import *
root 
= Tk()
lb 
= Listbox(root)
sl 
= Scrollbar(root)
sl.pack(side 
= RIGHT,fill = Y)
#解除Listbox的yscrollcommand与Scrollbar的set绑定
#
lb['yscrollcommand'] = sl.set
for i in range(100):
    lb.insert(END,str(i))
#使用索引为50的元素可见
lb.see(50)
lb.pack(side 
= LEFT)
sl[
'command'= lb.yview
root.mainloop()
#运行结果,Listbox显示了50项,即Listbox的视图已经到50了,但Scrollbar的slider仍旧位于0处。也就是说Scroolbar没有收到set
#
的命令。即说明解除此绑定,Scrollbar将不再响应Listbox视图改变的消息。但仍可以使用Scrollbar的slider来移动Listbox的视图。

'''6.再测试一下,解除Scrollbar的command与Listbox的yview的关系,测试代码如下:'''
# -*- coding: cp936 -*-
from Tkinter import *
root 
= Tk()
lb 
= Listbox(root)
sl 
= Scrollbar(root)
sl.pack(side 
= RIGHT,fill = Y)
#下面的这句是关键:指定Listbox的yscrollbar的回调函数为Scrollbar的set
lb['yscrollcommand'= sl.set
for i in range(100):
    lb.insert(END,str(i
*100))
#使用索引为50的元素可见
lb.see(50)
lb.pack(side 
= LEFT)
#解除Scrollbar的command与Listbox的yview的关系
#
sl['command'] = lb.yview
root.mainloop()
#运行程序,Scrollbar的slider已经到了50位置,也就是说Scrollbar响应了Listbox视图改变的消息,调用 了自己的set函数。
#
进行操作:拖动slder或点击up/down按钮,Listbox的视图没有任何反应,即Listbox不会响应Scrollbar的消息了。

#author:     jcodeer
#
blog:    jcodeer.cublog.cn
#
email:    jcodeer@126.com
 

Tkinter之Scrollbar篇

''' Created on 2017年9月15日 @author: Nick ''' ''' Created on 2017年9月13日 @author: Nick ''' ''' Tkinte...
  • pengzhi5966885
  • pengzhi5966885
  • 2017年09月15日 11:13
  • 365

Tkinter教程之Scrollbar篇

'''Tkinter教程之Scrollbar篇''' #Scrollbar(滚动条),可以单独使用,但最多的还是与其它控件(Listbox,Text,Canva等)结合使用 '''1.创建一个Scro...
  • Vincent_czz
  • Vincent_czz
  • 2012年06月27日 15:08
  • 4978

Python Tkinter Scrollbar控件

Scorllbar控件是用来操作(滚动)listboxs/canvases/text fields这些控件的。 Scrollbar也基本上是和listboxs/canvases/text fie...
  • wangyiyan315
  • wangyiyan315
  • 2013年11月19日 08:38
  • 5739

解决Tkinter中grid/pack布局中的listbox,scrollbar组合横置

Python 2.7 IDE Pycharm 5.0.3其实这个不应该写,我认为网上很多关于grid和listbox的操作,但是!大家都抄来抄去!完全没有get到重点啊!一个错误的答案能传和转好多博...
  • MrLevo520
  • MrLevo520
  • 2016年07月07日 20:34
  • 3619

python GUI编程——Scrollbar&&Listbox

摘要:在用python进程GUI编程的时候,经常需要用到listbox这个组件,而如何控制Listbox组件的显示问题,则要用到Scrollbar组件。本文,主要学习两个GUI组件之间动作的绑定——一...
  • trochiluses
  • trochiluses
  • 2014年03月26日 12:34
  • 2619

Tkinter教程之Scrollbar篇

'''Tkinter教程之Scrollbar篇''' #Scrollbar(滚动条),可以单独使用,但最多的还是与其它控件(Listbox,Text,Canva等)结合使用 '''1创建一个Scrol...
  • aa1049372051
  • aa1049372051
  • 2016年07月11日 11:28
  • 7981

Python-Tkinter教程之Frame篇

__author__ = 'xianhua.meng' # encoding: utf-8 #!/usr/bin/python '''Tkinter教程之Frame篇''' #Frame就是屏幕上的...
  • mengxianhua
  • mengxianhua
  • 2014年10月28日 10:15
  • 23445

Python Tkinter教程之Frame篇

'''Tkinter教程之Frame篇''' #Frame就是屏幕上的一块矩形区域,多是用来作为容器(container)来布局窗体。 '''1.创建Frame''' # -*- coding:...
  • zhou191954
  • zhou191954
  • 2012年12月16日 23:25
  • 4153

Tkinter教程之Frame篇

Tkinter教程之Frame篇#Frame就是屏幕上的一块矩形区域,多是用来作为容器(container)来布局窗体。1.创建Frame# -*- coding: cp936 -*-from Tki...
  • jcodeer
  • jcodeer
  • 2007年10月04日 19:23
  • 9347

Tkinter教程之Frame篇

'''Tkinter教程之Frame篇''' # Frame就是屏幕上的一块矩形区域,多是用来作为容器(container)来布局窗体。 '''1.创建Frame''' # -*- coding: u...
  • aa1049372051
  • aa1049372051
  • 2016年07月11日 15:40
  • 7457
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Tkinter教程之Scrollbar篇
举报原因:
原因补充:

(最多只允许输入30个字)