首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

滚动列表框后,tkinter Listbox.bbox方法返回None

滚动列表框是一种在tkinter中常见的用户界面元素,它允许用户在一个可滚动的列表中选择项目。在使用滚动列表框时,我们经常会涉及到获取选中项目的位置信息。

在tkinter中,Listbox组件提供了bbox方法用于获取项目的位置信息。但是,当滚动列表框发生滚动操作后,使用bbox方法可能会返回None。

这是因为当滚动列表框发生滚动时,列表框中的项目会动态地重新布局,导致bbox方法无法正确返回项目的位置信息。解决此问题的一种方法是通过使用update_idletasks方法,在滚动操作完成后更新列表框的布局。

以下是一个示例代码,演示如何解决滚动列表框后bbox方法返回None的问题:

代码语言:txt
复制
import tkinter as tk

def scroll_listbox(event):
    listbox.yview_scroll(1, "units")  # 向下滚动一个单位

def get_item_bbox(event):
    listbox.update_idletasks()  # 更新列表框的布局
    index = listbox.curselection()[0]
    bbox = listbox.bbox(index)
    if bbox is None:
        print("滚动后,bbox方法返回None")
    else:
        print("滚动后,项目的位置信息为:", bbox)

root = tk.Tk()

scrollbar = tk.Scrollbar(root)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)

listbox = tk.Listbox(root, yscrollcommand=scrollbar.set)
listbox.pack(side=tk.LEFT, fill=tk.BOTH)

scrollbar.config(command=listbox.yview)

for i in range(50):
    listbox.insert(tk.END, "项目" + str(i+1))

listbox.bind("<MouseWheel>", scroll_listbox)
listbox.bind("<Button-1>", get_item_bbox)

root.mainloop()

在这个示例中,我们创建了一个滚动列表框,通过绑定MouseWheel事件来处理滚动操作,绑定Button-1事件来获取项目的位置信息。

在get_item_bbox函数中,我们使用update_idletasks方法来更新列表框的布局,然后使用bbox方法获取选中项目的位置信息。如果bbox方法返回None,则表示滚动后bbox方法仍然返回None。

在这种情况下,我们可以根据实际需求进行处理,例如根据列表框的显示范围,计算出选中项目的位置信息。

请注意,本示例中未提到任何特定的云计算品牌商。如果需要了解关于滚动列表框的更多详细信息以及相关的云计算产品和推荐链接,请参考腾讯云官方文档或咨询腾讯云的相关支持。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

软件测试|软件测试|超好用超简单的Python GUI库——tkinter(八)

前言我们在日常使用各种桌面软件时,当我们想要搜索一个内容时,都会出现一个列表框,供我们选择,如下图:图片Tkinter提供了列表框(Listbox)控件来实现类似的功能。...Listbox控件列表框,即 Listbox。在使用 Tkinter 进行 GUI 编程的过程中,如果需要用户自己进行选择时就可以使用列表框控件。...列表框控件(Listbox)常用方法方法说明activate(index)将给定索引号对应的选项激活,即文本下方画一条下划线bbox(index)返回给定索引号对应的选项的边框,返回值是一个以像素为单位的...(从 0 开始)delete(first, last=None)删除参数 first 到 last 范围内(包含 first 和 last)的所有选项get(first, last=None)返回一个元组...size()返回 Listbox 组件中选项的数量xview(*args)该方法用于在水平方向上滚动 Listbox 组件的内容,一般通过绑定 Scollbar 组件的 command 选项来实现。

2K10

图形化界面的开发(GUI)_Tkinter库的使用-4(Entry+Spinbox+Listbox+Combobox)

@TOC 前言 本篇文章主要python第三方库Tkinter库的使用,包括输入框(Entry)控件,Spinbox控件,Listbox(列表框)控件和Combobox(复合框)控件它们的常用属性和方法以及具体的示例和相应的效果图...下面是Entry控件常用的一些方法: 方法 描述 get() 获取控件内的文本...用于将光标放在指定索引处写入的字符的左边 insert(index,s) 用于在放置在指定索引处的字符之前插入指定的字符串 delete(first,last=none...,否则返回假 xview(index) 它用于将条目控件与水平滚动条联系起来 xview_scroll(number,what) 它用于使条目可以水平滚动...提到列表框(Listbox)控件,就不得不讲一下与它非常相似的复选框(Combobox)控件,后续会讲。

10510
  • 测试之路 pytest接口自动化框架扩展-GUI窗口

    分享出源码后的同时将我的思路一并梳理出来。...tkinter就相当于flask框架。比较简陋,也比较易上手。我当前的需求就是简单实现一个窗口录入文件,然后调用脚本执行方法即可。最后把结果显示在一个对话框中。...添加组件后调用该方法,才能将组件放入画板中。tkinter还有两个布局函数--grid和place。 # Label标签组件。...:文本滚动条 command:滚动条拖动时的回调监听,其属性值是一个回调函数 selectmode:设置列表框的选择模式。...selectmode属性默认值是BROWSE Listbox: yscrollcommand 列表框纵向滚动时的回调监听,该属性的值是一个回调函数 xscrollcommand 列表框横向滚动时的回调监听

    2.9K30

    Python打包GUI界面组件汇总,Tkinter(TK)实例代码

    (MainForm,text="退出",fg='black') #窗体上创建 btn1 按钮 btn1.pack() #pack() 方法将 btn1 按钮放到窗体上 def fun_properry...=RIGHT,fill=Y) #设置滚动条为右边且竖向滚动 lb_show1=Listbox(master,fg='red',height=5,width=20) #创建需要滚动条的列表框 lb_show1...['yscrollcommand']=s_show.set #把滚动条对象赋给对象列表框属性 lb_show1.pack(side="right") #把滚动条的列表框定位(9)的右边(10) for...["1","2","3","4","5","6","7"]: lb_show1.insert(END,item) s_show.config(command=lb_show1.yview) #滚动条与列表框绑定连动命令属性...Label,Button,Checkbutton,Radiobutton]: #循环生成4个组件 pw.add(w(pw,text="可上下移动")) #添加到 PanedWindow 组件里,执行后该组件里的

    6.9K21

    零基础学Python【二十三、图形化界面设计 】(基础一篇全,欢迎认领)

    当导入tkinter模块后,调用 Tk()方法可初始化一个根窗体实例 root ,用 title() 方法可设置其标题文字,用geometry()方法可以设置窗体的大小(以像素为单位)。...方法 下表为文本框组件常用的方法: 序号 方法 & 描述 1 delete ( first, last=None ) 删除文本框里直接位置值 text.delete(10) # 删除索引值为10...列表框控件的主要方法见下面的表: 方法 功能描述 curselection() 返回光标选中项目编号的元组,注意并不是单个的整数 delete(起始位置,终止位置) 删除项目,终止位置可省略,全部清空为...size() 返回列表框行数 执行自定义函数时,通常使用“实例名.surselection()” 或 “selected” 来获取选中项的位置索引。...由于列表框实质上就是将Python 的列表类型数据可视化呈现,在程序实现时,也可直接对相关列表数据进行操作,然后再通过列表框展示出来,而不必拘泥于可视化控件的方法。

    14.3K30

    Python 学习之 Tkinter「下」

    列表框控件:可以包含一个或者多个文本框。作用:在 ListBox 控件的小窗口显示项目列表 注意 selectmode 几种方式的区别: 1.BROWSE:通常,只能从列表框中选择一行。...lb.delete(1) # 选中 用法同删除 lb.select_set(0, 1) # 取消选中,用法同删除 lb.select_clear(0) print(lb.size) # 控制台返回元素个数...print(lb.get(0, 2)) # 获取元素值,用法同删除 print(lb.curselection()) # 返回当前的索引值 print(lb.selection_includes...(1)) # 判断索引项是否被选中 效果图 列表框 ListBox II # 绑定变量 v = tkinter.StringVar() # SINGLE 与 BORWSE 相似,但是不支持鼠标按下后移动选中位置..., i) sc = tkinter.Scrollbar(win) # 滚动条 sc.pack(side=tkinter.RIGHT, fill=tkinter.Y) lb.configure(yscrollcommand

    2K50

    Python 学习之 Tkinter「下」

    开始正文: 列表框控件:可以包含一个或者多个文本框。作用:在 ListBox 控件的小窗口显示项目列表 注意 selectmode 几种方式的区别: 1.BROWSE:通常,只能从列表框中选择一行。...print(lb.get(0, 2)) # 获取元素值,用法同删除 print(lb.curselection()) # 返回当前的索引值 print(lb.selection_includes...列表框 ListBox II # 绑定变量 v = tkinter.StringVar() # SINGLE 与 BORWSE 相似,但是不支持鼠标按下后移动选中位置 lb = tkinter.Listbox...列表框 ListBox III # EXTENDED 通过 shift 和 control 可以使 ListBox 支持连选和多选,MULTIPLE 支持连选和多选 lb = tkinter.Listbox..., i) sc = tkinter.Scrollbar(win) # 滚动条 sc.pack(side=tkinter.RIGHT, fill=tkinter.Y) lb.configure(yscrollcommand

    2.2K20

    Python Tkinter Gui 常用组件介绍 基本使用

    tkinter库简介 一、窗体设置方法 1.tk类对象的方法 二、常用组件以及公共属性介绍 1.常用组件 2.公共属性 三、常用布局摆放方式 1.grid()–>以行和列(网格)形式对控件进行排列,此种方法使用起来较为灵活...1.打包(exe)后的环境资源访问 2.完整代码 3.运行效果 总结 前言 tkinter是什么?...GUI; tkinter库简介 python内置的GUI库,只要安装好 Python 环境之后就能 import tkinter 库; 基于Tk工具包,该工具包最初是为TCL设计的,后被应用到多种脚本语言中...) Scale 进度条 线性“滑块”组件,可设定起始值和结束值,会显示当前位置的精确值 Scrollbar 滚动条 对其支持的组件(文本域、画布、列表框、文本框)提供滚动功能 Text 文本域 多行文字区域...教程(非常详细):http://c.biancheng.net/tkinter/ 以上就是今天要讲的内容,本文仅仅介绍了Tk制作Gui界面的简单使用,而Tk为我们提供了大量封装程序功能的函数和方法,丰富用户的体验感

    2.9K20

    Python中tkinter模块的常用参数总结

    );Text 文本框(多行);Frame   框架,将几个组件组成一组Label    标签,可以显示文字或图片;Listbox    列表框...,tkinter.E); fill 填充方式 (Y,垂直,X,水平) expand 1可扩展,0不可扩展grid组件使用行列的方法放置组件的位置,参数有...”          关闭验证,默认  vaildatecommand返回Ture or Flase进行验证  vaildatecommand在返回值之后才使用invailcommand执行需要执行的命令...方法为bind;或者用bind_class方法进行类绑定,bind_all方法将所有组件事件绑定到事件响应函数上。...能自动刷新的字符串变量,可用set和get方法进行传值和取值,类似的还有IntVar,DoubleVar...sys.stdout.flush()  刷新输出附1:tkinter中的颜色图片

    87130

    Python的GUI编程和tkinter,Wxpython

    当导入tkinter模块后,调用 Tk()方法可初始化一个根窗体实例 root ,用 title() 方法可设置其标题文字,用geometry()方法可以设置窗体的大小(以像素为单位)。...,当内容超过可视化区域时使用,如列表框。....该控件除具有共有属性外,还具有显示文本(text)、返回变量(variable)、选中返回值(onvalue)和未选中默认返回值(offvalue)等重要属性。...值得注意的是:属性text通常用于实例在第一次呈现时的固定文本,而如果需要在程序执行后发生变化,则可以使用下列方法之一实现: 1、用控件实例的configure()方法来改变属性text的值,可使显示的文本发生变化...import tkinter as tk class Application(tk.Frame): def __init__(self, master=None): super(

    28210

    python--GUI编程--Tkinter

    由于 Tkinter 是内置到 python 的安装包中、只要安装好 Python 之后就能 import Tkinter 库、而且 IDLE 也是用 Tkinter 编写而成、对于简单的图形界面 Tkinter...多选框控件;用于在程序中提供多项选择框 Entry 输入控件;用于显示简单的文本内容 Frame 框架控件;在屏幕上显示一个矩形区域,多用来作为容器 Label 标签控件;可以显示文本和位图 Listbox 列表框控件...消息控件;用来显示多行文本,与label比较类似 Radiobutton 单选按钮控件;显示一个单选的按钮状态 Scale 范围控件;显示一个数值刻度,为输出限定范围的数字区间 Scrollbar 滚动条控件...,当内容超过可视化区域时使用,如列表框。....控件有特定的几何状态管理方法,管理整个控件区域组织,一下是Tkinter公开的几何管理类:包、网格、位置 几何方法 描述 pack()         包装; grid()         网格;

    3.8K30

    Python3中tkinter模块使用方法详解

    文本框(多行);     Frame           框架,将几个组件组成一组     Label           标签,可以显示文字或图片;     Listbox         列表框...,就会自动返回一个ID,创建一个图形时将它赋值给一个变量,需要ID时就可以使用这个变量名。    ...coords(ID)          返回对象的位置的两个坐标(4个数字元组); 对于按钮组件、菜单组件等可以在创建组件时通过command参数指定其事件处理函数。...方法为bind;或者用bind_class方法进行类绑定,bind_all方法将所有组件事件绑定到事件响应函数上。   ...cuncu, vartext, result, fuhao result = fuhao = None vartext = tkinter.StringVar() cuncu = [] class anjianzhi

    4.5K21

    小朋友学Python(24):Tkinter图形界面编程

    多选框控件;用于在程序中提供多项选择框 Entry 输入控件;用于显示简单的文本内容 Frame 框架控件;在屏幕上显示一个矩形区域,多用来作为容器 Label 标签控件;可以显示文本和位图 Listbox 列表框控件...消息控件;用来显示多行文本,与label比较类似 Radiobutton 单选按钮控件;显示一个单选的按钮状态 Scale 范围控件;显示一个数值刻度,为输出限定范围的数字区间 Scrollbar 滚动条控件...,当内容超过可视化区域时使用,如列表框。....属性 描述 Dimension 控件大小 Color 控件颜色 Font 控件字体 Anchor 锚点 Relief 控件样式 Bitmap 位图 Cursor 光标 几何管理 Tkinter控件有特定的几何状态管理方法...,管理整个控件区域组织,一下是Tkinter公开的几何管理类:包、网格、位置 几何方法 描述 pack() 包装 grid() 网格 place() 位置

    4.8K70

    python苦短-爬取音乐

    -下载音乐 概述 使用到的库 requests: 爬虫使用到的请求库 jsonpath: 处理json数据的第三方库 os: python文件系统操作的库 urlretrieve: 对url解析的库 tkinter...Entry 输入控件:用于显示简单的文本内容 Label 标签控件 Listbox 列表框控件,显示字符串返回给用户 Text 文本控件,显示多行文本 软件目标 开发一款音乐下载器 通过爬虫获取音乐解析网上的音乐....mp3".format(title) # 插入文本,显示下载进度 text.insert(END,'歌曲:{}...正在下载...'.format(title)) # 文本框滚动...urlretrieve(url,path) # 在文本控件中显示下载完成 text.insert(END,'{}已经下载完成'.format(title)) # 文本框滚动...输入框、下载按钮、退出按钮、列表框控件运行良好 下载结果 ? 在工作目录下,找到下载好的音乐 测试可听 通过音乐播放器测试,歌曲为完整的 ?

    1.4K30

    Python-GUI|Tkinter模块

    这篇文章不会介绍如何灵活地运用Tkinter,而是阐述Tkinter这个库包括什么,它能干什么!...接下来,调用这个Label的pack方法,pack方法属于Pack类(属于几何管理器), tk中的每一个控件都继承自 class Widget(BaseWidget, Pack, Place, Grid...用于在程序中提供多项选择框 Entry 输入控件;用于显示简单的文本内容 Frame 框架控件;在屏幕上显示一个矩形区域,多用来作为容器 Label 标签控件;可以显示文本和位图 Listbox 列表框控件...;用来显示多行文本,与label比较类似 Radiobutton 单选按钮控件;显示一个单选的按钮状态 Scale 范围控件;显示一个数值刻度,为输出限定范围的数字区间 Scrollbar 滚动条控件...,当内容超过可视化区域时使用,如列表框 Text 文本控件;用于显示多行文本 Toplevel 容器控件;用来提供一个单独的对话框,和Frame比较类似 Spinbox 输入控件;与Entry

    4.7K100

    Python|GUI编程的基础讲解

    图2 插入属性后 三、基本组件 创建了一个空窗口,便可以向上面添加内容,这些内容就是窗口的组件,这些组件会在窗口里形成文字、按钮、表单、图片等等。...文本框(多行); Frame   框架,将几个组件组成一组 Label    标签,可以显示文字或图片; Listbox    列表框...;配合使用canvas, entry, listbox, and text窗口部件的标准滚动条; Toplevel 用来创建子窗口窗口组件。...(50,50) #窗口创建好后即可开始添加组件 Lal = Label(window, text='你喜欢python吗?'...图3 效果图 四、写在最后 笔者也是一个在校大学生,可能写的介绍会有一些不足,欢迎大家提议,关于python GUI编程的基础先介绍到这里,下周给各位读者带来组件的详细使用方法。

    1.9K30
    领券