tkinter (二)

listbox控件

列表框小部件用于显示用户可以从中选择多个项目的项目列表。

声明listbox控件对象

# lb:listbox对象
# master:表示父窗口
# option:部件最常用的选项列表(可用作以逗号分隔的键值对使用这些选项)
lb = Listbox ( master, option, ... )
option 含义
bg 标签和指示器后面显示的正常背景颜色
bd 指标周围边框的大小(默认值为2像素)
cursor 鼠标悬停在列表框上时显示的光标
font 用于列表框中文本的字体
fg 用于列表框中文本的颜色
height 列表框中显示的行数(不是像素,默认值为10)
highlightcolor 当窗口小部件具有焦点时,焦点中显示的颜色突出显示
highlightthickness 焦点的厚度突出显示
relief 选择三维边框着色效果 (SUNKEN默认为)
selectbackground 要使用的背景颜色显示所选文本
selectmode 确定可以选择的项目数以及鼠标拖动如何影响选择
width 小部件的宽度(以字符为单位: 默认值为20)
xscrollcommand 如果要允许用户水平滚动列表框,可以将列表框小部件链接到水平滚动条。
yscrollcommand 如果要允许用户垂直滚动列表框,可以将列表框小部件链接到垂直滚动条

selectmode

selectmode的值 含义
BROWSE(默认值) 从列表框中选择一行。 单击某个项目然后拖动到其他行,选择将跟随鼠标。
SINGLE 选择一行,并且无法拖动鼠标。
MULTIPLE 多选,单击切换是否选中
EXTENDED 单击拖动来选择相邻的多行

listbox对象的方法

选项 说明
activate ( index ) 选择由给定索引指定的行
curselection() 返回一个元组,其中包含所选元素的行号,从0开始计数。如果未选择任何元素,则返回空元组。
delete ( first, last=None ) 删除索引在[first,last]范围内的行。 如果省略第二个参数,则删除具有索引优先级的单行。
get ( first, last=None ) 返回一个元组,其中包含从第一个到最后一个包含索引的行的文本。 如果省略第二个参数,则返回最接近第一个的行的文本。
index ( i ) 如果可能,请定位列表框的可见部分,以使包含索引i的行位于窗口小部件的顶部。
insert ( index, *elements ) 在index指定的行之前,将一个或多个新行插入列表框。 如果要将新行添加到列表框的末尾,请使用END作为第一个参数。
nearest ( y ) 返回相对于列表框小部件最接近y坐标y的可见行的索引
see ( index ) 调整列表框的位置,以便索引引用的行可见
size() 返回列表框中的行数
xview() 要使列表框可水平滚动,请将关联水平滚动条的命令选项设置为此方法
xview_moveto ( fraction ) 滚动列表框,使其最长行的最左边部分位于列表框的左侧之外。 分数在[0,1]范围内。
xview_scroll ( number, what ) 水平滚动列表框。 对于what参数,使用UNITS按字符滚动,或使用PAGES按页面滚动,即按列表框的宽度滚动。 number参数告诉滚动的数量。
yview() 要使列表框可以垂直滚动,请将关联的垂直滚动条的命令选项设置为此方法。
yview_moveto ( fraction ) 滚动列表框,使其最长行的宽度的顶部位于列表框的左侧之外。 分数在[0,1]范围内。
yview_scroll ( number, what ) 垂直滚动列表框。 对于what参数,使用UNITS按行滚动,或使用PAGES按页面滚动,即按列表框的高度滚动。 number参数告诉滚动的数量。

相关代码

# 引入tkinter
import tkinter
window = tkinter.Tk()
window.title("RadioButton单选框控件")
window.geometry("400x400+400+200")
#  列表框控件:可以包含一个或多个文本框
#  作用:在listbox控件小窗口显示一个字符串
lb = tkinter.Listbox(window,selectmode=tkinter.BROWSE)
lb.pack()
for item in ["one","two","three","four"]:
    lb.insert(tkinter.END,item)
# 在开始添加元素   tkinter.ACTIVE
lb.insert(tkinter.ACTIVE,"在开始添加1")
lb.insert(tkinter.ACTIVE,"在开始添加2")
# 在结尾添加元素   tkinter.END
lb.insert(tkinter.END,"在结尾添加1")
lb.insert(tkinter.END,"在结尾添加2")
# 若添加一个列表数据,会被当做一个元素
lb.insert(tkinter.END,["数据1","数据2","数据3"])
lb.insert(tkinter.ACTIVE,"在开始添加3")
# 删除指定区间内的数据
# lb.delete(5,7)
# 删除指定索引
# lb.delete(0)
# 选中单个元素
lb.select_set(2)
# 选中一个区间内的所有元素
# lb.select_set(2,5)
# 取消选中
#lb.select_clear(3)
# lb.select_clear(3,5)
# 获取列表中的元素个数
#print(lb.size())
# 从列表取值
#print(lb.get(2)) # 取单个值
#print(lb.get(2,4)) # 取这个区间的值
# 返回当前选中的索引项
print(lb.curselection())
# 判断 是否被选中 lb.select_includes(索引)
print(lb.select_includes(2))
print(lb.select_includes(3))
window.mainloop()
# 引入tkinter
import tkinter
# 实例化tkinter对象,创建主窗口
window = tkinter.Tk()
# 设置窗口的标题
window.title("简单实例")
# 设置窗口的大小和窗口的起始位置 window.geometry("宽度x高度+距离屏幕左边缘距离+距离屏幕上边缘距离")
window.geometry("400x200+100+20")
# 绑定变量
lbStr = tkinter.StringVar()
# SINGLE   不支持鼠标选中移动
lb = tkinter.Listbox(window,selectmode=tkinter.SINGLE,listvariable=lbStr)
lb.pack()
for item in ["one","two","three","four"]:
    lb.insert(tkinter.END,item)
# 获得绑定变量,打印其值
# print(lbStr.get())
# 设置listbox中的值
# lbStr.set(("102","103","105"))
# 绑定事件触发的方法
# def goPrint(event):
#     print("打印选中内容的索引:",lb.curselection())
#     print("打印选中内容:",lb.get(lb.curselection()))
# # 绑定事件
# # :鼠标左键双击
# lb.bind('',goPrint)
# 将标签显示在屏幕,进入等待状态,准备响应用户发起的GUI事件。
window.mainloop()
# 引入tkinter
import tkinter
# 实例化tkinter对象,创建主窗口
window = tkinter.Tk()
# 设置窗口的标题
window.title("简单实例")
# 设置窗口的大小和窗口的起始位置 window.geometry("宽度x高度+距离屏幕左边缘距离+距离屏幕上边缘距离")
# window.geometry("400x200+100+20")
# 如果不设置窗口的大小,会使用默认
# EXTENDED  可以使listbox支持shift和ctrl
lb = tkinter.Listbox(window,selectmode=tkinter.EXTENDED)
# 循环插入数据
for item in ["one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen"]:
    lb.insert(tkinter.END,item)
# 创建滚动条
sc = tkinter.Scrollbar(window)
# 滚动条靠右将Y轴充满
sc.pack(side=tkinter.RIGHT,fill=tkinter.Y)
# 配置文本框    yscrollcommand=滚动条的set()
lb.configure(yscrollcommand=sc.set)
lb.pack(side=tkinter.LEFT,fill=tkinter.BOTH)
# 额外给属性赋值
sc['command'] = lb.yview
# 将标签显示在屏幕,进入等待状态,准备响应用户发起的GUI事件。
window.mainloop()
# 引入tkinter
import tkinter
# 实例化tkinter对象,创建主窗口
window = tkinter.Tk()
# 设置窗口的标题
window.title("简单实例")
# 设置窗口的大小和窗口的起始位置 window.geometry("宽度x高度+距离屏幕左边缘距离+距离屏幕上边缘距离")
window.geometry("400x200+100+20")
# MULTIPLE:多选
lb = tkinter.Listbox(window,selectmode=tkinter.MULTIPLE)
# 循环插入数据
for item in ["one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen"]:
    lb.insert(tkinter.END,item)
# 将标签显示在屏幕,进入等待状态,准备响应用户发起的GUI事件。
window.mainloop()

你可能感兴趣的:(python)