`
fulerbakesi
  • 浏览: 561592 次
文章分类
社区版块
存档分类
最新评论

Tkinter教程之Scrollbar篇

 
阅读更多
'''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的消息了。


原文

chinaunix的Python技术文档中心

分享到:
评论

相关推荐

    tkinter全部控件的英文帮助全集

    tkinter控件全集(共38种控件的英文帮助) 导入方式:import tkinter as tk,有18种控件(也称组件): Button、Canvas、Checkbutton、Entry、Frame、Label、LabelFrame、Listbox、Menu、Menubutton、Message、...

    tkinter.pdf

    Describes the Tkinter widget set for constructing graphical user interfaces (GUIs) in the Python programming language. This publication is available in Web form1 and also as a PDF document2. Please ...

    Python中使用Tkinter模块创建GUI程序实例

    Tkinter的Widgets有:Button、Canvas、Checkbutton、Entry、Frame、Label、Listbox、Menu、Menubutton、Message、Radiobutton、Scales、Scrollbar、TEXT、Toplevel等。 例: 复制代码 代码如下: # This program ...

    Tkinter 8.4 reference - a GUI for Python (2010).pdf

    1. What is Tkinter?.......................................................................................................................3 2. A minimal application.......................................

    【python入门高阶之tkinter 窗口设计

    python之tkinter窗口 python之tkinter窗口 控件的用法:  Label : 标签  Frame:框架,就是一个容器. Entry:单行文本输入域 Text: Button:按钮部件是一个标准的Tkinter窗口部件,用实现各种按钮。按钮能够包含...

    PythonGUI:Tkinter学习笔记03

    文章目录Tkinter note 031、Label2、Frame3、Entry4、Text5、Button6.Listbox7.Scrollbar 说明:每个控件最后要加上pack(),否则控件是无法显示的 1、Label 说明:标签 用法:Label(根对象,【属性列表】) 属性: ...

    Python Tkinter图形工具使用方法及实例解析

    Tkinter 常用组件 按钮 Button 按钮组件 RadioButton 单选框组件 CheckButton 选择按钮组件 Listbox 列表框组件 文本输组件 Entry 单行文本框组件 Text 多行文本框组件 标签组件 Label 标签组件,可以显示...

    自定义滚动条-crx插件

    tkinter scrollbar 只需今天就安装我们的软件即可。 react scrollbar 选择新滚动条的颜色和宽度 让我们的软件更改滚动条的颜色和宽度 它非常简单易用,安装后只需单击扩展图标,即可开始自定义滚动条。 ...

    easyGridview.py

    EasyGridview可以一行代码制作表格,有竖向scrollbar,继承自Treeview

    Python 2.6 Graphics Cookbook.pdf

    Scrollbar 227 Custom DIY controller widgets 228 Organizing widgets inside frames 232 Appendix: Quick tips for running Python programs in Microsoft Windows 235 Running Python programs in Microsoft...

Global site tag (gtag.js) - Google Analytics