当前位置:   article > 正文

【Python】【进阶篇】七、Tkinter的列表框和组合框控件_python tkinter 表格控件

python tkinter 表格控件

七、Tkinter的列表框和组合框控件

列表框 Listbox 和复选框Combobox是 Tkinter 中两个控件。

Listbox控件

列表框控件Listbox的常用方法如下

名称说明
activate(index)将给定索引号对应的选项激活,即文本下方画一条下划线
bbox(index)返回给定索引号对应的选项的边框,返回值是一个以像素为单位的 4 元祖表示边框:(xoffset, yoffset, width, height), xoffset 和 yoffset 表示距离左上角的偏移位置
curselection()返回一个元组,包含被选中的选项序号(从 0 开始)
delete(first, last=None)删除参数 first 到 last 范围内(包含 first 和 last)的所有选项
get(first, last=None)返回一个元组,包含参数 first 到 last 范围内(包含 first 和 last)的所有选项的文本
index(index)返回与 index 参数相应选项的序号
itemcget(index, option)获得 index 参数指定的项目对应的选项(由 option 参数指定)
itemconfig(index, **options)设置 index 参数指定的项目对应的选项(由可变参数 **option 指定)
nearest(y)返回与给定参数 y 在垂直坐标上最接近的项目的序号
selection_set(first, last=None)设置参数 first 到 last 范围内(包含 first 和 last)选项为选中状态,使用 selection_includes(序号) 可以判断选项是否被选中。
size()返回 Listbox 组件中选项的数量
xview(*args)该方法用于在水平方向上滚动 Listbox 组件的内容,一般通过绑定 Scollbar 组件的 command 选项来实现。 如果第一个参数是 “moveto”,则第二个参数表示滚动到指定的位置:0.0 表示最左端,1.0 表示最右端;如果第一个参数是 “scroll”,则第二个参数表示滚动的数量,第三个参数表示滚动的单位(可以是 “units” 或 “pages”),例如:xview(“scroll”, 2, “pages”)表示向右滚动二行。
yview(*args)该方法用于在垂直方向上滚动 Listbox 组件的内容,一般通过绑定 Scollbar 组件的 command 选项来实现
listvariable1. 指向一个 StringVar 类型的变量,该变量存放 Listbox 中所有的项目
02. 在 StringVar 类型的变量中,用空格分隔每个项目,例如 var.set(“c c++ java python”)
selectbackground1. 指定当某个项目被选中的时候背景颜色,默认值由系统指定
selectborderwidth1. 指定当某个项目被选中的时候边框的宽度
02. 默认是由 selectbackground 指定的颜色填充,没有边框
03. 如果设置了此选项,Listbox 的每一项会相应变大,被选中项为 “raised” 样式
selectforeground1. 指定当某个项目被选中的时候文本颜色,默认值由系统指定
selectmode1. 决定选择的模式,tk 提供了四种不同的选择模式,分别是:“single”(单选)、“browse”(也是单选,但拖动鼠标或通过方向键可以直接改变选项)、“multiple”(多选)和 “extended”(也是多选,但需要同时按住 Shift 键或 Ctrl 键或拖拽鼠标实现),默认是 “browse”
setgrid指定一个布尔类型的值,决定是否启用网格控制,默认值是 False
takefocus指定该组件是否接受输入焦点(用户可以通过 tab 键将焦点转移上来),默认值是 True
xscrollcommand为 Listbox 组件添加一条水平滚动条,将此选项与 Scrollbar 组件相关联即可
yscrollcommand为 Listbox 组件添加一条垂直滚动条,将此选项与 Scrollbar 组件相关联即可
yview(*args)该方法用于在垂直方向上滚动 Listbox 组件的内容,一般通过绑定 Scollbar 组件的 command 选项来实现
from tkinter import Tk, Listbox

win = Tk()
win.title("Python自学")
win.iconbitmap("./python.png")
win.geometry('480x270')

# 创建列表选项
listbox1 = Listbox(win)
listbox1.pack()
# i表示索引值,item 表示值,根据索引值的位置依次插入
for i, item in enumerate(["C", "C++", "C#", "Python", "Java"]):
    listbox1.insert(i, item)
# 显示窗口
win.mainloop()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

除了上述使用 enumerate() 来实现选项插入的方法外,我们还可以使用 “end” 实现。代码如下-

from tkinter import Tk, Listbox

win = Tk()
win.title("Python自学")
win.iconbitmap("./python.png")
win.geometry('480x270')

# 创建列表选项
listbox1 = Listbox(win)
listbox1.pack()
# i表示索引值,item 表示值,根据索引值的位置依次插入
for item in ["C", "C++", "C#", "Python", "Java"]:
    listbox1.insert("end", item)
# 显示窗口
win.mainloop()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

增加滚动条和删除功能

from tkinter import Tk, Listbox, Scrollbar, RIGHT, MULTIPLE, Y, Button, BOTTOM, ACTIVE

win = Tk()
win.title("Python自学")
win.iconbitmap("./python.png")
win.geometry('480x270')

# 创建滚动条
s = Scrollbar(win)
# 设置垂直滚动条显示的位置,使得滚动条,靠右侧;通过 fill 沿着 Y 轴填充
s.pack(side=RIGHT, fill=Y)
# 将 selectmode 设置为多选模式,并为Listbox控件添加滚动条
listbox1 = Listbox(win, selectmode=MULTIPLE, height=5, yscrollcommand=s.set)
# i 表示索引值,item 表示值,根据索引值的位置依次插入
for i, item in enumerate(range(1, 50)):
    listbox1.insert(i, item)
listbox1.pack()
# 设置滚动条,使用 yview使其在垂直方向上滚动 Listbox 组件的内容,通过绑定 Scollbar 组件的 command 参数实现
s.config(command=listbox1.yview)
# 使用匿名函数,创建删除函数,点击删除按钮,会删除选项
bt = Button(win, text='删除', command=lambda x=listbox1: x.delete(ACTIVE))
# 将按钮放置在底部
bt.pack(side=BOTTOM)
# 显示窗口
win.mainloop()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

Combobox控件
解决列表的项目过多时,全部显示显得界面格外臃肿。

from tkinter import Tk, Text, ttk

win = Tk()
win.title("Python自学")
win.iconbitmap("./python.png")
win.geometry('480x270')
win.resizable(0, 0)
# 创建下拉菜单
cbox = ttk.Combobox(win)
# 使用 grid() 来控制控件的位置
cbox.grid(row=1, sticky="NW")
# 设置下拉菜单中的值
cbox['value'] = ('C', 'C#', 'Go', 'Python', 'Java')
# 通过 current() 设置下拉菜单选项的默认值
cbox.current(3)


# 编写回调函数,绑定执行事件,向文本插入选中文本
def func(event):
    text.insert('insert', cbox.get() + "\n")


# 绑定下拉菜单事件
cbox.bind("<<ComboboxSelected>>", func)
# 新建文本框
text = Text(win)
# 布局
text.grid(pady=5)
win.mainloop()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/744275
推荐阅读
相关标签
  

闽ICP备14008679号