Python学习(29)--tkinter图形界面编程2

简介: Python学习(29)--tkinter图形界面编程2 这一节我们将继续介绍tkinter中的控件部分,本节主要介绍的控件为下拉列表控件Listbox。 1.Listbox Listbox是一个列表框控件,其主要功能为提供一个数据列表供用户选择。

Python学习(29)--tkinter图形界面编程2

这一节我们将继续介绍tkinter中的控件部分,本节主要介绍的控件为下拉列表控件Listbox。

1.Listbox

Listbox是一个列表框控件,其主要功能为提供一个数据列表供用户选择。用户可以通过鼠标选中列表框提供的数据,但不能修改列表框中的数据项。应用程序可以对用户的选中数据项事件作出响应。代码例子如下:

[python] view plain copy

  1. import tkinter
  2. win=tkinter.Tk()#创建一个窗体
  3. win.title("MyWindow")#为窗体添加一个标题
  4. win.geometry("400x400+120+50")#设置窗体的位置和大小
  5. #Listbox控件
  6. listbox=tkinter.Listbox(win,#设置Text控件的父容器为win
  7.                         selectmode=tkinter.BROWSE
  8.                         #设置下拉列表框listbox数据项的选中模式为:
  9.                         #当左击鼠标并移动时,可以选中列表项
  10.                         #selectmode=tkinter.SINGLE
  11.                         #设置通过左击鼠标的方式选中数据项
  12.                         )
  13. for item in ["111","222","333","444"]:
  14.     listbox.insert(tkinter.END,item)#从尾部插入列表框元素item
  15. listbox.insert(tkinter.ACTIVE,"555")#从头部插入列表框元素"555"
  16. listbox.pack()#将列表框挂载到父容器
  17. win.mainloop()#显示创建的主窗体

如上, 通过tkinter模块的Listbox()方法创建了一个列表框listbox。Listbox控件的属性selectmode用于设置列表框数据项的选中方式。当selectmode=tkinter.BROWSE时,左击鼠标并移动可以选中数据项。其效果图如下:

当selectmode=tkinter.SINGLE时,通过左击鼠标来选中数据项,此时移动鼠标不能再选中。其效果图如下:

Listbox对象调用insert()方法可以向列表框中插入数据项,插入方式有两种。

第一种方式,当listbox调用insert()方法并设置参数1为tkinter.END时,表示的是使用尾插法插入数据项,即插入数据项在数据项列表的尾部插入,如当使用尾插法插入列表["111","222","333","444"]时,将列表中的元素依次取出,并从前向后插入列表框;

第二种方式,当设置参数1为tkinter.ACTIVE时,表示的是使用头插法插入数据项,即插入数据项在数据列表的头部插入,如当插入数据项"555"时,在整个数据列表("111","222","333","444")的头部插入。程序运行的结果如下图:

2.Listbox的方法运用

Listbox提供了很多操作列表框数据项的方法。如下:

①delete()

delete()方法的功能为通过指定的下标删除Listbox数据项。当调用delete()方法的参数只有一个下标时,即删除此下标对应的数据项;当参数为两个start和end时,即删除下标从start到end的数据项。

Listbox数据项的下标与数据项插入的先后顺序无关,只与数据项在列表中的位置有关,下标从0开始。如下图:

如上,数据项的下标从上往下,由0开始,依次递增。代码例子如下:

 

[python] view plain copy

  1. import tkinter
  2. win=tkinter.Tk()#创建一个窗体
  3. win.title("MyWindow")#为窗体添加一个标题
  4. win.geometry("400x400+120+50")#设置窗体的位置和大小
  5. #Listbox控件
  6. listbox=tkinter.Listbox(win,#设置Text控件的父容器为win
  7.                         selectmode=tkinter.SINGLE
  8.                         #设置下拉列表框listbox的选中模式为:
  9.                         #当左击鼠标并移动时,可以选中列表项
  10.                         )
  11. for item in ["111","222","333","444"]:
  12.     listbox.insert(tkinter.END,item)#从尾部插入列表框元素item
  13. listbox.insert(tkinter.ACTIVE,"555")#从头部插入列表框元素"555"
  14. listbox.delete(1,3)#将列表框的下标为1-3的数据项删去
  15. listbox.delete(1)#将列表框下标为1的数据项删去
  16. listbox.pack()#将列表框挂载到父容器
  17. win.mainloop()#显示创建的主窗体

 

在之前1中代码的基础上,我们添加用于删除列表框数据项的代码。

listbox.delete(1,3)删除下标为1-3的数据项,删除完下标从1到3的数据项之后,剩余数据项的下标将重新排列。排列的方式依然按照,从上往下,从0开始,依次递增进行。运行后的结果如下:

之后运行listbox.delete(1),删除下标1对应的数据项,运行结果如下图:

②select_set()方法

select_set()方法的功能为选中对应下标的数据项。当调用select_set()方法且参数只有一个下标时,会选中此下标对应的数据项;当参数为两个,start和end时,会选中下标从start至end的数据项.如下代码:

 

[python] view plain copy

  1. import tkinter
  2. win=tkinter.Tk()#创建一个窗体
  3. win.title("MyWindow")#为窗体添加一个标题
  4. win.geometry("400x400+120+50")#设置窗体的位置和大小
  5. #Listbox控件
  6. listbox=tkinter.Listbox(win,#设置Text控件的父容器为win
  7.                         selectmode=tkinter.BROWSE
  8.                         #设置下拉列表框listbox的选中模式为:
  9.                         #当左击鼠标并移动时,可以选中列表项
  10.                         )
  11. for item in ["111","222","333","444"]:
  12.     listbox.insert(tkinter.END,item)#从尾部插入列表框元素item
  13. listbox.insert(tkinter.ACTIVE,"555")#从头部插入列表框元素"555"
  14. listbox.select_set(2,4)#选中下标2-4对应的数据项
  15. listbox.select_set(0)#选中下标0对应的数据项
  16. listbox.pack()#将列表框挂载到父容器
  17. win.mainloop()#显示创建的主窗体

 

如上,在1中代码的基础上,添加了以下代码:

listbox.select_set(2,4)

listbox.select_set(0)

执行代码后,选中下标2-4和下标0对应的数据项,代码执行结果如下:

③select_clear()

select_clear()方法的功能为清除数据项的选中状态,即使得一个数据项从选中状态切换到未选中状态。当调用方法select_clear(),只有一个下标参数时,即清除此下标的选中状态;当调用方法select_clear(),下标参数为start和end时,即清除下标从start至end对应数据项的选中状态。

之前我们介绍了select_set()方法用于选中数据项,在此基础上我们使用select_clear()方法清除这些数据项的选中状态。代码如下:

[python] view plain copy

  1. import tkinter
  2. win=tkinter.Tk()#创建一个窗体
  3. win.title("MyWindow")#为窗体添加一个标题
  4. win.geometry("400x400+120+50")#设置窗体的位置和大小
  5. #Listbox控件
  6. listbox=tkinter.Listbox(win,#设置Text控件的父容器为win
  7.                         selectmode=tkinter.BROWSE
  8.                         #设置下拉列表框listbox的选中模式为:
  9.                         #当左击鼠标并移动时,可以选中列表项
  10.                         )
  11. for item in ["111","222","333","444"]:
  12.     listbox.insert(tkinter.END,item)#从尾部插入列表框元素item
  13. listbox.insert(tkinter.ACTIVE,"555")#从头部插入列表框元素"555"
  14. listbox.select_set(2,4)#选中下标2-4对应的数据项
  15. listbox.select_set(0)#选中下标0对应的数据项
  16. listbox.select_clear(2,3)#清除下标2-3对应数据项的选中状态
  17. listbox.select_clear(0)#清除下标0对应数据项的选中状态
  18. listbox.pack()#将列表框挂载到父容器
  19. win.mainloop()#显示创建的主窗体

在②中代码的基础上添加了以下代码:

 

[python] view plain copy

  1. listbox.select_clear(2,3)#清除下标2-3对应数据项的选中状态
  2. listbox.select_clear(0)#清除下标0对应数据项的选中状态

 

第一行代码即为清除下标为2-3对应数据项的选中状态。

清除前:

清除后:

第二行代码为清除下标0对应数据项的选中状态,

清除前:

清除后:

④delete()方法

delete()方法的功能为删除列表框中对应下标的数据项。当Listbox对象调用方法delete()传入的下标参数只有一个时,即删除此下标对应的数据项;当传入的下标参数为start至end时,即删除下标从start至end的数据项。代码如下:

 

[python] view plain copy

  1. import tkinter
  2. win=tkinter.Tk()#创建一个窗体
  3. win.title("MyWindow")#为窗体添加一个标题
  4. win.geometry("400x400+120+50")#设置窗体的位置和大小
  5. #Listbox控件
  6. listbox=tkinter.Listbox(win,#设置Text控件的父容器为win
  7.                         selectmode=tkinter.BROWSE
  8.                         #设置下拉列表框listbox的选中模式为:
  9.                         #当左击鼠标并移动时,可以选中列表项
  10.                         )
  11. for item in ["111","222","333","444"]:
  12.     listbox.insert(tkinter.END,item)#从尾部插入列表框元素item
  13. listbox.insert(tkinter.ACTIVE,"555")#从头部插入列表框元素"555"
  14. listbox.delete(1,3)#将列表框的下标为1-3的数据项删去
  15. listbox.delete(1)#将列表框下标为1的数据项删去
  16. listbox.pack()#将列表框挂载到父容器
  17. win.mainloop()#显示创建的主窗体

 

如上,在①中代码的基础上添加了以下代码:

 

[python] view plain copy

  1. listbox.delete(1,3)#将列表框的下标为1-3的数据项删去
  2. listbox.delete(1)#将列表框下标为1的数据项删去

 

执行第一行代码,删除下标从1至3的数据项,执行后结果如下:

删除前:

删除后:

接着执行第二行代码,删除下标1对应的数据项,结果如下:

⑤其他方法

Listbox还提供了很多获取数据项信息的方法,如size()为获取列表框的长度;get()方法为获取列表框对应下标的数据项内容;curselection()为获取当前被选中数据项的下标;select_includes()为判断某下标对应的数据项是否被选中,若被选中返回True,否则返回True。代码如下:

 

[python] view plain copy

  1. import tkinter
  2. win=tkinter.Tk()#创建一个窗体
  3. win.title("MyWindow")#为窗体添加一个标题
  4. win.geometry("400x400+120+50")#设置窗体的位置和大小
  5. #Listbox控件
  6. listbox=tkinter.Listbox(win,#设置Text控件的父容器为win
  7.                         selectmode=tkinter.BROWSE
  8.                         #设置下拉列表框listbox的选中模式为:
  9.                         #当左击鼠标并移动时,可以选中列表项
  10.                         )
  11. for item in ["111","222","333","444"]:
  12.     listbox.insert(tkinter.END,item)#从尾部插入列表框元素item
  13. listbox.insert(tkinter.ACTIVE,"555")#从头部插入列表框元素"555"
  14. listbox.select_set(0)#选中下标0对应的数据项
  15. print("列表框长度:",listbox.size())#列表框的长度
  16. print("获取列表框下标2-4对应的数据项:",listbox.get(2,4))
  17. print("获取列表框下标3对应的数据项:",listbox.get(3))
  18. print("获取当前选中数据项的下标:",listbox.curselection())
  19. #判断下标为0的数据项是否被选中,选中返回True,未选中返回False
  20. print("判断下标为0的数据项是否选中:",listbox.select_includes(0))
  21. #判断下标为1的数据项是否被选中,选中返回True,未选中返回False
  22. print("判断下标为1的数据项是否选中:",listbox.select_includes(1))
  23. listbox.pack()#将列表框挂载到父容器
  24. win.mainloop()#显示创建的主窗体

 

如上代码为listbox调用各种方法获取数据项的信息,各种方法的功能如注释所示。代码打印结果如下:

 

以上就是本节介绍的有关Listbox的全部内容,主要掌握的内容有Listbox插入数据项,选中数据项,清除数据项选中状态以及删除数据项,获取数据项信息的各种方法。下一节我们将继续介绍tkinter中的控件,敬请期待。

原文地址http://www.bieryun.com/2399.html

相关文章
|
18天前
|
存储 数据挖掘 开发者
Python编程入门:从零到英雄
在这篇文章中,我们将一起踏上Python编程的奇幻之旅。无论你是编程新手,还是希望拓展技能的开发者,本教程都将为你提供一条清晰的道路,引导你从基础语法走向实际应用。通过精心设计的代码示例和练习,你将学会如何用Python解决实际问题,并准备好迎接更复杂的编程挑战。让我们一起探索这个强大的语言,开启你的编程生涯吧!
|
1天前
|
存储 程序员 Python
Python学习的自我理解和想法(2)
今日学习Python第二天,重点掌握字符串操作。内容涵盖字符串介绍、切片、长度统计、子串计数、大小写转换及查找位置等。通过B站黑马程序员课程跟随老师实践,非原创代码,旨在巩固基础知识与技能。
|
11天前
|
Python
Python编程入门:从零开始的代码旅程
本文是一篇针对Python编程初学者的入门指南,将介绍Python的基本语法、数据类型、控制结构以及函数等概念。文章旨在帮助读者快速掌握Python编程的基础知识,并能够编写简单的Python程序。通过本文的学习,读者将能够理解Python代码的基本结构和逻辑,为进一步深入学习打下坚实的基础。
|
15天前
|
数据采集 存储 数据处理
Python中的多线程编程及其在数据处理中的应用
本文深入探讨了Python中多线程编程的概念、原理和实现方法,并详细介绍了其在数据处理领域的应用。通过对比单线程与多线程的性能差异,展示了多线程编程在提升程序运行效率方面的显著优势。文章还提供了实际案例,帮助读者更好地理解和掌握多线程编程技术。
|
18天前
|
存储 人工智能 数据挖掘
Python编程入门:打造你的第一个程序
本文旨在为初学者提供Python编程的初步指导,通过介绍Python语言的基础概念、开发环境的搭建以及一个简单的代码示例,帮助读者快速入门。文章将引导你理解编程思维,学会如何编写、运行和调试Python代码,从而开启编程之旅。
36 2
|
19天前
|
存储 Python
Python编程入门:理解基础语法与编写简单程序
本文旨在为初学者提供一个关于如何开始使用Python编程语言的指南。我们将从安装Python环境开始,逐步介绍变量、数据类型、控制结构、函数和模块等基本概念。通过实例演示和练习,读者将学会如何编写简单的Python程序,并了解如何解决常见的编程问题。文章最后将提供一些资源,以供进一步学习和实践。
30 1
|
20天前
|
机器学习/深度学习 存储 数据挖掘
Python 编程入门:理解变量、数据类型和基本运算
【10月更文挑战第43天】在编程的海洋中,Python是一艘易于驾驭的小船。本文将带你启航,探索Python编程的基础:变量的声明与使用、丰富的数据类型以及如何通过基本运算符来操作它们。我们将从浅显易懂的例子出发,逐步深入到代码示例,确保即使是零基础的读者也能跟上步伐。准备好了吗?让我们开始吧!
25 0
|
2月前
|
安全 测试技术 数据库
Python编程--sys模块及OS模块简单用例
Python编程--sys模块及OS模块简单用例
33 1
|
2月前
|
JSON 数据格式 Python
Python编程:利用JSON模块编程验证用户
Python编程:利用JSON模块编程验证用户
26 1
|
2月前
|
数据处理 Python
Python编程-利用datetime模块生成当前年份之前指定的间隔所有年份的日期列表和csv文件
Python编程-利用datetime模块生成当前年份之前指定的间隔所有年份的日期列表和csv文件
21 1