Tkinter:Listbox组件,Scrollbar 组件,Scale 组件

2024-01-28 10:30

本文主要是介绍Tkinter:Listbox组件,Scrollbar 组件,Scale 组件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Listbox

列表框组件用于显示一个选择列表,Listbox 只能包含文本项目,并且所有的项目都需要使用相同的字体和颜色,根据组件的配置,用户可以从列表中选择一个或多个选项。跟 chectbutton and radiobutton 组件类似,不过这个是以列表的形式来提供选择。

当你创建一个listbox 组件的时候,他是空的,所以第一件要做的事就是添加一行或多行文本进去,使用 insert() 方法,第一个参数事插入的索引号,第二个参数是插入的字符串。索引号通常是项目的序号(0 是列表中第一项的序号)。

你也可以使用一些特殊的索引号:比如 ACTIVE 表示选中的项目,END 表示 listbox的最后一行,所以当要插入一个项目到列表时可以使用 END。

Listbox 组件根据 selectmode 选项提供了四种不同的选择模式:“single”(单选)、“browse”(也是单选,但拖动鼠标或通过方向键可以直接改变选项)、“multiple”(多选)和 “extended”(也是多选,但需要同时按住 Shift 键或 Ctrl 键或拖拽鼠标实现)。默认是 “browse”。

import tkinter as tk
root = tk.Tk()thelb=tk.Listbox(root,selectmode='extended',height=11)       # 整个多选,默认是显示10行,height 设置显示的行数
thelb.pack()                                                 # 如果再多,建议加滚动条。for item in ['炎龙侠','风鹰侠','黎塞留','让巴尔','君主','拉菲']:thelb.insert('end',item)thelb.delete(0,1)       # 删除前两个,,,thebutton=tk.Button(root,text='删除',command=lambda x=thelb:x.delete('active')) # 加一个删除按钮
thebutton.pack()root.mainloop()

在这里插入图片描述

参数和方法

又是喜闻乐见的参数环节,,,除了那些常见的,

参数描述
height1. 设置 Listbox 显示的行数(不是像素) 2. 默认值是 10
listvariable1. 指向一个 StringVar 类型的变量,该变量存放 Listbox 中所有的项目 2. 在 StringVar 类型的变量中,用空格分隔每个项目,例如 var.set(“鸡蛋 鸭蛋 鹅蛋 李狗蛋”)
selectbackground1. 指定当某个项目被选中的时候背景颜色 2. 默认值由系统指定
selectborderwidth1. 指定当某个项目被选中的时候边框的宽度 2. 默认是由 selectbackground 指定的颜色填充,没有边框 3. 如果设置了此选项,Listbox 的每一项会相应变大,被选中项为 “raised” 样式
selectforeground1. 指定当某个项目被选中的时候文本颜色 2. 默认值由系统指定
selectmode1. 决定选择的模式 2. 四种不同的选择模式:“single”(单选)、“browse”(也是单选,但拖动鼠标或通过方向键可以直接改变选项)、“multiple”(多选)和 “extended”(也是多选,但需要同时按住 Shift 键或 Ctrl 键或拖拽鼠标实现) 3. 默认是 “browse”
setgrid1. 指定一个布尔类型的值,决定是否启用网格控制 2. 默认值是 False
xscrollcommand1. 为 Listbox 组件添加一条水平滚动条 2. 将此选项与 Scrollbar 组件相关联即可
yscrollcommand1. 为 Listbox 组件添加一条垂直滚动条 2. 将此选项与 Scrollbar 组件相关联即可

方法( 不管用不用的上,见过再说。。。)

activate(index)
– 将给定索引号对应的选项激活(在其文本下方画一条下划线)

bbox(index)
– 返回给定索引号对应的选项的边框
– 返回值是一个以像素为单位的 4 元祖表示边框:(xoffset, yoffset, width, height)
– xoffset 和 yoffset 表示距离左上角的偏移位置
– 返回的 width 是文本的实际宽度(像素为单位)
– 如果指向的选项是不可见的,那么返回值是 None

curselection()
– 返回一个元组,包含被选中的选项的序号(从 0 开始)
– 如果没有选中任何选项,返回一个空元组

delete(first, last=None)
– 删除参数 first 到 last 范围内(包含 first 和 last)的所有选项
– 如果忽略 last 参数,表示删除 first 参数指定的选项

get(first, last=None)
– 返回一个元组,包含参数 first 到 last 范围内(包含 first 和 last)的所有选项的文本
– 如果忽略 last 参数,表示返回 first 参数指定的选项的文本

index(index)
– 返回与 index 参数相应的选项的序号(例如 lb.index(“end”))

*insert(index, elements)
– 添加一个或多个项目到 Listbox 中
– 使用 lb.insert(“end”) 添加新选项到末尾

itemcget(index, option)
– 获得 index 参数指定的项目对应的选项(由 option 参数指定)

**itemconfig(index, options)
– 设置 index 参数指定的项目对应的选项(由可变参数 **option 指定)

nearest(y)
– 返回与给定参数 y 在垂直坐标上最接近的项目的序号

scan_dragto(x, y)
– 见下方 scan_mark(x, y)

scan_mark(x, y)
– 使用这种方式来实现 Listbox 内容的滚动
– 需要将鼠标按钮事件及当前鼠标位置绑定到 scan_mark(x, y) 方法,然后再将 <motion> 事件及当前鼠标位置绑定到 scan_dragto(x, y) 方法,就可以实现 Listbox 在当前位置和 sacn_mack(x, y) 指定的位置 (x, y) 之间滚动

see(index)
– 调整列表框的位置,使得 index 参数指定的选项是可见的

selection_anchor(index)
– 在 index 参数的位置下一个锚点,此后你就可以通过特殊索引 “anchor” 访问

selection_clear(first, last=None)
– 取消参数 first 到 last 范围内(包含 first 和 last)选项的选中状态
– 如果忽略 last 参数,则只取消 first 参数指定选项的选中状态

selection_includes(index)
– 返回 index 参数指定的选项的选中状态
– 返回 1 表示选中,返回 0 表示未选中

selection_set(first, last=None)
– 设置参数 first 到 last 范围内(包含 first 和 last)选项为选中状态
– 如果忽略 last 参数,则只设置 first 参数指定选项为选中状态

size()
– 返回 Listbox 组件中选项的数量

xview(*args)
– 该方法用于在水平方向上滚动 Listbox 组件的内容,一般通过绑定 Scollbar 组件的 command 选项来实现(具体操作参考:Scrollbar)
– 如果第一个参数是 “moveto”,则第二个参数表示滚动到指定的位置:0.0 表示最左端,1.0 表示最右端
–如果第一个参数是 “scroll”,则第二个参数表示滚动的数量,第三个参数表示滚动的单位(可以是 “units” 或 “pages”),例如:xview(“scroll”, 3, “pages”)表示向右滚动三行

yview(*args)
– 该方法用于在垂直方向上滚动 Listbox 组件的内容,一般通过绑定 Scollbar 组件的 command 选项来实现(具体操作参考:Scrollbar)
– 如果第一个参数是 “moveto”,则第二个参数表示滚动到指定的位置:0.0 表示最顶端,1.0 表示最底端
– 如果第一个参数是 “scroll”,则第二个参数表示滚动的数量,第三个参数表示滚动的单位(可以是 “units” 或 “pages”),例如:yview(“scroll”, 3, “pages”) 表示向下滚动三页

Scrollbar

滚动条组件用于滚动一些组件的可见范围,根据方向可以分为水平 垂直滚到条,这个常用于实现文本,画布和列表框的滚动。

安装滚动条:

  1. 设置该组件的 xscrollbarcommand 或者 yscrollbarcommand 选项为 Scrollbar 组件 的 set() 方法。
  2. 设置 Scrollbar 组件 的 command 选项 为该组件的 xview() 或者 yview() 方法。

import tkinter as tkroot = tk.Tk()sb = tk.Scrollbar(root)
sb.pack(side="right", fill="y")lb = tk.Listbox(root, yscrollcommand=sb.set)for i in range(1000):lb.insert("end", str(i))lb.pack(side="left", fill="both")sb.config(command=lb.yview("scroll", 3, "pages"))          # 这里每次滚动三行root.mainloop()

这事实上就是一个互联互通的过程,当用户操作滚动条进行滚动的时候,滚动条首先响应用户的滚动操作,接下来,通过 yview() 方法(Listbox 的内置方法),内容就会自动刷新,然后,如果是 Listbox 里面滚动,它就会调用 sb.set() 方法,同时修改滚动条的位置。

添加水平滚动条方法跟上边一样,只是将 yscrollcommand 改为 xscrollcommand,yview 改为 xview 即可。

参数和方法

又是参数。。

参数含义
activebackground1. 指定当鼠标在上方飘过的时候滑块和箭头的背景颜色 2. 默认值由系统指定
activerelief1. 指定当鼠标在上方飘过的时候滑块的样式 2. 默认值是 “raised” 3. 可以选择 “flat”,“sunken”,“groove”,“ridge”
command1. 当滚动条更新时回调的函数 2. 通常的是指定对应组件的 xview() 或 yview() 方法
elementborderwidth1. 指定滚动条和箭头的边框宽度 2. 默认值是 -1(表示使用 borderwidth 选项的值)
jump1. 指定当用户拖拽滚动条时的行为 2. 默认值是 False,滚动条的任何一丝变动都会即刻调用 command 选项指定的回调函数 3. 设置为 True 则当用户松开鼠标才调用
orient1. 指定绘制 “horizontal”(垂直滚动条)还是 “vertical”(水平滚动条) 2. 默认值是 VERTICAL
relief1. 指定边框样式 2. 默认值是 “sunken” 3. 可以选择 “flat”,“raised”,“groove”,“ridge”
repeatdelay1. 该选项指定鼠标左键点击滚动条凹槽的响应时间 2. 默认值是 300(毫秒)
repeatinterval1. 该选项指定鼠标左键紧按滚动条凹槽时的响应间隔 2. 默认值是 100(毫秒)
takefocus1. 指定使用 Tab 键可以将焦点移到该 Scrollbar 组件上 2. 默认是开启的,可以将该选项设置为 False 避免焦点在此组件上
troughcolor1. 指定凹槽的颜色 2. 默认值由系统指定
width1. 指定滚动条的宽度 2. 默认值是 16 像素

方法
activate(element)
– 显示 element 参数指定的元素的背景颜色和样式
– element 参数可以设置为:“arrow1”(箭头1),“arrow2”(箭头2)或 “slider”(滑块)

delta(deltax, deltay)
– 给定一个鼠标移动的范围 deltax 和 deltay(像素为单位,deltax 表示水平移动量,deltay 表示垂直移动量),然后该方法返回一个浮点类型的值(范围 -1.0 ~ 1.0)
– 这通常在鼠标绑定上使用,用于确定当用户拖拽鼠标时滑块的如何移动

fraction(x, y)
– 给定一个像素坐标 (x, y),该方法返回最接近给定坐标的滚动条位置(范围 0.0 ~ 1.0)

get()
– 返回当前滑块的位置 (a, b)
– a 值表示当前滑块的顶端或左端的位置,b 值表示当前滑块的底端或右端的位置(范围 0.0 ~ 1.0)

identify(x, y)
– 返回一个字符串表示指定位置下(如果有的话)的滚动条部件
– 返回值可以是:“arrow1”(箭头1),“arrow2”(箭头2)、“slider”(滑块)或 “”(啥都没有)

set(*args)
– 设置当前滚动条的位置
– 如果设置则需要两个参数 (first, last),first 表示当前滑块的顶端或左端的位置,last 表示当前滑块的底端或右端的位置(范围 0.0 ~ 1.0)

Scale

刻度组件看起来就是一个带数据的 scrollbar 组件,scale 组件允许用于通过活动滑块来选择一个范围内的数字,你可以控制该组件的最大值,最小值,分辨率

当你希望用户输入某个范围内的数值,这个组件可以很好的代替 entry 组件。

import tkinter as tk
root = tk.Tk()# 可以通过 resolution 选项控制分辨率(步长),通过 tickinterval 选项设置刻度:
s1=tk.Scale(root, from_=0, to=42,tickinterval=5,length=200,resolution=5,orient='vertical')
s1.pack()                                      # 指定 from to 来指定范围,主要from 是python关键字,我们使用from_
s2=tk.Scale(root, from_=0, to=200, orient="horizontal",tickinterval=10,length=600)
s2.pack()def show():print(s1.get(),s2.get())tk.Button(root,text='获得位置',command=show).pack()root.mainloop()

在这里插入图片描述

如果 length 不设置。。。。。
在这里插入图片描述

参数和方法

参数含义
bigincrement1. 设置“大”增长量 2. 该选项设置增长量的大小 3. 默认值是 0,增长量为范围的 1/10
digits1. 设置最多显示多少位数字 4. 补充注释:例如设置 from 选项为 0,to 选项为 20,digits 选项设置为 5,那么滑块的范围就是在 0.000 ~ 20.000 直接滑动 5. 默认值是 0(不开启)
label1. 你可以在垂直的 Scale 组件的顶端右侧(水平的话是左端上方)显示一个文本标签 6. 默认值是不显示标签
length1. Scale 组件的长度 7. 默认值是 100 像素
orient1. 设置该 Scale 组件是水平放置(“horizontal”)还是垂直放置(“vertical”) 8. 默认值是 “vertical”
relief1. 指定边框样式 9. 默认值是 “sunken” 10. 可以选择 “flat”,“raised”,“groove” 和 “ridge”
repeatdelay1. 该选项指定鼠标左键点击滚动条凹槽的响应时间 11. 默认值是 300(毫秒)
repeatinterval1. 该选项指定鼠标左键紧按滚动条凹槽时的响应间隔 12. 默认值是 100(毫秒)
resolution1. 指定 Scale 组件的分辨率(步长,即在凹槽点击一下鼠标左键它移动的数量) 13. 补充注释:例如设置 from 选项为 0,to 选项为 20,resolution 选项设置为 0.1 的话,那么每点击一下鼠标就是在 0.0 ~ 20.0 之间以 0.1 的步长移动 14. 默认值是 1
showvalue1. 设置是否显示滑块旁边的数字 15. 默认值为 True
sliderlength1. 设置滑块的长度 16. 默认值是 30 像素
sliderrelief1. 设置滑块的样式 17. 默认值是 “raised” 18. “flat”,“sunken”,“groove” 和 “ridge”
state1. 默认情况下 Scale 组件支持鼠标事件和键盘事件,可以通过设置该选项为 “disabled” 来禁用此功能 19. 默认值是 “normal”
takefocus1. 指定使用 Tab 键是否可以将焦点移动到该 Scale 组件上 2. 默认是开启的,可以通过将该选项设置为 False 避免焦点落在此组件上
tickinterval1. 设置显示的刻度,如果设置一个值,那么就会按照该值的倍数显示刻度 2. 默认值是不显示刻度
to1. 设置滑块最底(右)端的位置 2. 默认值是 100
troughcolor1. 设置凹槽的颜色 2. 默认值由系统指定
variable1. 指定一个与 Scale 组件相关联的 Tkinter 变量,该变量存放滑块最新的位置 2. 当滑块移动的时候,该变量的值也会发生相应的变化
width1. 指定 Scale 组件的宽度 2. 默认值是 15 像素

方法

coords(value=None)
– 获得当前滑块的位置对应 Scale 组件左上角的相对坐标
– 如果设置 value 参数,则返回当滑块所在该位置时的相对坐标

get()
– 获得当前滑块的位置
– Tkinter 会尽可能地返回一个整型值,否则返回一个浮点型值

identify(x, y)
– 返回一个字符串表示指定位置下(如果有的话)的 Scale 部件
– 返回值可以是:“slider”(滑块),“trough1”(左侧或上侧的凹槽),“trough2”(右侧或下侧的凹槽)或 “”(啥都没有)

set(value)
– 设置 Scale 组件的值(滑块的位置)

这篇关于Tkinter:Listbox组件,Scrollbar 组件,Scale 组件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/653359

相关文章

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

vue2 组件通信

props + emits props:用于接收父组件传递给子组件的数据。可以定义期望从父组件接收的数据结构和类型。‘子组件不可更改该数据’emits:用于定义组件可以向父组件发出的事件。这允许父组件监听子组件的事件并作出响应。(比如数据更新) props检查属性 属性名类型描述默认值typeFunction指定 prop 应该是什么类型,如 String, Number, Boolean,

kubelet组件的启动流程源码分析

概述 摘要: 本文将总结kubelet的作用以及原理,在有一定基础认识的前提下,通过阅读kubelet源码,对kubelet组件的启动流程进行分析。 正文 kubelet的作用 这里对kubelet的作用做一个简单总结。 节点管理 节点的注册 节点状态更新 容器管理(pod生命周期管理) 监听apiserver的容器事件 容器的创建、删除(CRI) 容器的网络的创建与删除

火语言RPA流程组件介绍--浏览网页

🚩【组件功能】:浏览器打开指定网址或本地html文件 配置预览 配置说明 网址URL 支持T或# 默认FLOW输入项 输入需要打开的网址URL 超时时间 支持T或# 打开网页超时时间 执行后后等待时间(ms) 支持T或# 当前组件执行完成后继续等待的时间 UserAgent 支持T或# User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器

[论文笔记]LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale

引言 今天带来第一篇量化论文LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale笔记。 为了简单,下文中以翻译的口吻记录,比如替换"作者"为"我们"。 大语言模型已被广泛采用,但推理时需要大量的GPU内存。我们开发了一种Int8矩阵乘法的过程,用于Transformer中的前馈和注意力投影层,这可以将推理所需

vue 父组件调用子组件的方法报错,“TypeError: Cannot read property ‘subDialogRef‘ of undefined“

vue 父组件调用子组件的方法报错,“TypeError: Cannot read property ‘subDialogRef’ of undefined” 最近用vue做的一个界面,引入了一个子组件,在父组件中调用子组件的方法时,报错提示: [Vue warn]: Error in v-on handler: “TypeError: Cannot read property ‘methods

JavaEE应用的组件

1、表现层组件:主要负责收集用户输入数据,或者向客户显示系统状态。最常用的表现层技术是JSP,但JSP并不是唯一的表现层技术。 2、控制器组件:对于JavaEE的MVC框架而言,框架提供一个前端核心控制器,而核心控制器负责拦截用户请求,并将用户请求转发给用户实现的控制器组件。而这些用户实现的控制器则负责处理调用业务逻辑方法,处理用户请求。 3、业务逻辑组件:是系统的核心组件,实现系统的业务逻辑

17 通过ref代替DOM用来获取元素和组件的引用

重点 ref :官网给出的解释是: ref: 用于注册对元素或子组件的引用。引用将在父组件的$refs 对象下注册。如果在普通DOM元素上使用,则引用将是该元素;如果在子组件上使用,则引用将是组件实例: <!-- vm.$refs.p will be the DOM node --><p ref="p">hello</p><!-- vm.$refs.child will be the c

16 子组件和父组件之间传值

划重点 子组件 / 父组件 定义组件中:props 的使用组件中:data 的使用(有 return 返回值) ; 区别:Vue中的data (没有返回值);组件方法中 emit 的使用:emit:英文原意是:触发、发射 的意思components :直接在Vue的方法中声明和绑定要使用的组件 小炒肉:温馨可口 <!DOCTYPE html><html lang="en"><head><