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

Python-在Tkinter中切换窗口时列表框项目不会终止

在Tkinter中切换窗口时,列表框项目不会终止的问题可能是由于列表框对象的生命周期管理不当导致的。为了解决这个问题,可以采取以下步骤:

  1. 确保在切换窗口时,先销毁当前窗口中的列表框对象,然后再创建新窗口中的列表框对象。可以使用destroy()方法来销毁列表框对象。
  2. 在切换窗口时,可以将列表框对象作为参数传递给新窗口的构造函数,以便在新窗口中重新创建列表框对象并显示之前的项目。可以使用get()方法获取列表框中的项目。

下面是一个示例代码,演示了如何在Tkinter中切换窗口时正确处理列表框对象:

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

class Window1(tk.Toplevel):
    def __init__(self, master):
        tk.Toplevel.__init__(self, master)
        self.listbox = tk.Listbox(self)
        self.listbox.pack()
        self.listbox.insert(tk.END, "Item 1")
        self.listbox.insert(tk.END, "Item 2")
        self.listbox.insert(tk.END, "Item 3")
        
        button = tk.Button(self, text="Switch Window", command=self.switch_window)
        button.pack()
    
    def switch_window(self):
        self.listbox.destroy()  # 销毁列表框对象
        self.destroy()  # 销毁当前窗口
        window2 = Window2(self.master, self.listbox.get(0, tk.END))  # 创建新窗口,并传递列表框中的项目
        window2.mainloop()

class Window2(tk.Toplevel):
    def __init__(self, master, items):
        tk.Toplevel.__init__(self, master)
        self.listbox = tk.Listbox(self)
        self.listbox.pack()
        for item in items:
            self.listbox.insert(tk.END, item)
        
        button = tk.Button(self, text="Switch Window", command=self.switch_window)
        button.pack()
    
    def switch_window(self):
        self.listbox.destroy()  # 销毁列表框对象
        self.destroy()  # 销毁当前窗口
        window1 = Window1(self.master)  # 创建新窗口
        window1.mainloop()

class MainApplication(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        self.button = tk.Button(self, text="Open Window", command=self.open_window)
        self.button.pack()
    
    def open_window(self):
        self.withdraw()  # 隐藏主窗口
        window1 = Window1(self)  # 创建新窗口
        window1.mainloop()

if __name__ == "__main__":
    app = MainApplication()
    app.mainloop()

在上述示例代码中,首先定义了两个窗口类Window1Window2,分别表示两个窗口。在Window1中,创建了一个列表框对象,并添加了一些项目。点击"Switch Window"按钮时,会销毁当前窗口和列表框对象,并创建Window2窗口,将列表框中的项目传递给Window2。在Window2中,重新创建列表框对象,并显示之前的项目。点击"Switch Window"按钮时,会销毁当前窗口和列表框对象,并重新创建Window1窗口。

通过以上的处理,可以确保在切换窗口时,列表框项目会被正确终止和显示。

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

相关·内容

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

当使用 Place 布局管理容器的组件,需要设置组件的 x、y 或 relx、rely 选项,Tkinter 容器内的坐标系统的原点 (0,0) 左上角,其中 X 轴向右延伸,Y 轴向下延伸,如图所示...列表框控件的主要方法见下面的表: 方法 功能描述 curselection() 返回光标选中项目编号的元组,注意并不是单个的整数 delete(起始位置,终止位置) 删除项目终止位置可省略,全部清空为...delete(0,END) get(起始位置,终止位) 返回范围所含项目文本的元组,终止位置可忽略 insert(位置,项目元素) 插入项目元素(若有多项,可用列表或元组类型赋值),若位置为END,则将项目元素添加在最后...size() 返回列表框行数 执行自定义函数,通常使用“实例名.surselection()” 或 “selected” 来获取选中项的位置索引。...图形化界面设计时,由于其具有灵活的界面,因此往往比列表框更受喜爱。

13.8K30

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

前言我们日常使用各种桌面软件,当我们想要搜索一个内容,都会出现一个列表框,供我们选择,如下图:图片Tkinter提供了列表框(Listbox)控件来实现类似的功能。...Listbox控件列表框,即 Listbox。使用 Tkinter 进行 GUI 编程的过程,如果需要用户自己进行选择就可以使用列表框控件。...列表框的选项可以是多个条目,也可以是单个唯一条目,但常用于多个条目。....指向一个 StringVar 类型的变量,该变量存放 Listbox 中所有的项目 2. StringVar 类型的变量,用空格分隔每个项目,例如 var.set("c c++ java python...bt.pack(side = BOTTOM)# 显示窗口win.mainloop()程序运行结果,如下所示:图片StringVar() 添加列表选项通过 StringVar() 方法动态地获取列表框的选项

2K10

Python-GUI|Tkinter模块

这篇文章不会介绍如何灵活地运用Tkinter,而是阐述Tkinter这个库包括什么,它能干什么!...然后我们就可以窗口上创建一个Label,即贴一个标签,这个Label可以显示文本、图标、图像等等。...最后一行代码,x.mainloop()即可进入事件循环了,mainloop定义Misc类(Methods defined on both toplevel and interior widgets)...控件梳理 Button 按钮控件;程序显示按钮 Canvas 画布控件;显示图形元素,如线条或文本 Checkbutton 多选框控件,用于程序中提供多项选择框 Entry 输入控件;用于显示简单的文本内容...Frame 框架控件;屏幕上显示一个矩形区域,多用来作为容器 Label 标签控件;可以显示文本和位图 Listbox 列表框控件;Listbox窗口小部件是用来显示一个字符串列表给用户

4.6K100

​Python | GUI编程之tkinter (一)

,这样,这个程序可以双击启动,而且启动不会开始命令行(也就是不会弹出小黑框)。...认识控件 在上边的代码我们使用了Label控件,Label控件是Tk最常用的组件之一,可以用来显示文本和图片等。tkinter,一共提供了15个控件,下面我们来认识一下它们。...控件名称 描述 Button 按钮控件;程序显示按钮。...,用来作为容纳其他控件的容器 Label 标签控件;可以显示文本和位图 Listbox 列表框控件;Listbox窗口小部件是用来显示一个字符串列表给用户 Menubutton 菜单按钮控件,由于显示菜单项...该控件内有以下属性/方法: Method/Attribute Description show 为输入文字显示控件内的内容 get() 读取控件内的文字 下面看一个demo: from tkinter

5.9K31

Python 学习之 Tkinter「下」

开始正文: 列表框控件:可以包含一个或者多个文本框。作用: ListBox 控件的小窗口显示项目列表 注意 selectmode 几种方式的区别: 1.BROWSE:通常,只能从列表框中选择一行。...如果单击一个项目,然后拖动鼠标会跟随选中,是默认的。 2.SINGLE:和 BROWSE 的区别是你只能选择一行,不能拖动。...列表框 ListBox II # 绑定变量 v = tkinter.StringVar() # SINGLE 与 BORWSE 相似,但是不支持鼠标按下后移动选中位置 lb = tkinter.Listbox...列表框 ListBox III # EXTENDED 通过 shift 和 control 可以使 ListBox 支持连选和多选,MULTIPLE 支持连选和多选 lb = tkinter.Listbox...["white", "black", "red", "green", "blue", "yellow", "pink"]: menu2.add_command(label=i) # 向菜单条添加菜单选项

2.2K20

Python 学习之 Tkinter「下」

列表框控件:可以包含一个或者多个文本框。作用: ListBox 控件的小窗口显示项目列表 注意 selectmode 几种方式的区别: 1.BROWSE:通常,只能从列表框中选择一行。...如果单击一个项目,然后拖动鼠标会跟随选中,是默认的。 2.SINGLE:和 BROWSE 的区别是你只能选择一行,不能拖动。...3.EXTENDED:通过 shift 和 control 可以使 ListBox 支持连选和多选,能拖动 4.MULTIPLE:支持连选和多选,但不能拖动 列表框 ListBox I # 创建一个...获取元素值,用法同删除 print(lb.curselection()) # 返回当前的索引值 print(lb.selection_includes(1)) # 判断索引项是否被选中 效果图 列表框...["white", "black", "red", "green", "blue", "yellow", "pink"]: menu2.add_command(label=i) # 向菜单条添加菜单选项

2K50

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

前言上文我们介绍了tkinter列表框处理,我们日常生活还会遇到组合框的情况,tkinter同样可以实现这个功能,下面我们来介绍一下tkinter如何实现组合框。...注:Combobox 并不包含在 tkinter 模块,而是包含在tkinter.ttk子模块,因此若想使用 Combobox 控件,需要使用下面的导包方式:from tkinter import...ttkCombobox语法如下所示:cbox=Combobox(窗口对象,[参数列表])Combobox 控件形式虽然与列表控件存在不同,但它们的本质是相同,因此属性和方法是通用的。...创建窗口win = tkinter.Tk()win.title("拜仁慕尼黑")win.geometry('400x250')win.resizable(0,0)# 创建下拉菜单cbox = ttk.Combobox...总结本文主要介绍了tkinter组合框的实现,组合框的使用比列表框更为多见,更为方便,希望能够帮助到大家,后续我们将介绍tkinter的单选框多选框如何实现。

1.1K10

使用 Python+Tkinter 图形化界面知识创建小型 GUI 项目

使用 Python + Tkinter 图形化界面知识创建小型 GUI 项目 引言 本篇博客,我们将展示如何使用我们 Python 图形化界面基础课程中学到的知识来设计和实现一个小型 GUI 项目...项目概述 我们将创建一个带有以下功能的 To-Do 应用程序: 1 . 用户可以文本框输入新任务。 2 . 用户可以点击“添加任务”按钮将任务添加到任务列表。 3 ....创建主窗口,并设置标题和窗口大小: root = tk.Tk() root.title("To-Do List App") root.geometry("400x400") 步骤3:创建任务列表框 创建一个任务列表框...,启动 Tkinter 的主事件循环以显示应用程序窗口并处理用户交互: root.mainloop() 效果图: 项目演示和总结 我们已经成功创建了一个小型 To-Do 列表应用程序,它具有添加、...希望这个示例项目对你有所帮助,让你能够应用在 Python 图形化界面基础课程中学到的知识来创建自己的小型 GUI 项目。祝你 GUI 编程的学习和实践取得成功!

44620

太实用了!自己动手写软件——GUI编程

顶层窗口的上面构建不同的GUI组件 通过底层的应用代码将这些GUI组件连接起来 进入主事件循环 安装和使用 好了,回归正题,看看我们今天需要学习的tkinter,因为是内置库,所以我们不需要安装直接调用即可...控件 描述 Button 按钮控件;程序显示按钮,包含的事件如:鼠标悬浮、按下、释放以及键盘活动 Canvas 画布控件;显示图形元素,如线条、椭圆、矩形等 Checkbutton 多选框控件;...用于程序中提供多项选择框 Entry 输入控件;用于显示简单的文本内容 Frame 框架控件;屏幕上显示一个矩形区域,多用来作为容器 Label 标签控件;可以显示文本和位图 Listbox 列表框控件...,如列表框。....() window.mainloop() 首先我们导入tkinter模块 然后新建一个顶层窗口 五六行是定义顶层窗口的标题和大小 第八行是我们编写的Button控件,将其放置window顶层框架上,

4.1K10

Python进阶-GUI窗口

让 GUI 程序启动和运行起来需要以下 5 个主要步骤: 导入 tkinter 模块(python3.x版本); 创建一个顶层窗口对象,用于容纳整个 GUI 应用; 顶层窗口对象之上(或者“其中...获得 tkinter 的访问权是首要步骤。 ? ① 窗口和控件 GUI 编程,顶层的根窗口对象包含组成 GUI 应用的所有小窗口对象。它们可能是文字标签、按钮、列表框等。...所以当创建一个顶层窗口,只是表示需要一个地方来摆放所有的控件。...>>> import tkinter >>> top = tkinter.Tk() tkinter.Tk() 返回的对象通常称为根窗口,这也是一些应用使用 root 而不是 top 来指代它的原因。...顶层窗口是那些应用独立显示的部分。GUI 程序可以有多个顶层窗口,但是其中只能有一个是根窗口。 控件可以独立存在,也可以作为容器存在。如果一个控件包含其他控件,就可以将其认为是那些控件的父控件。

1.4K50

Python Tkinter GUI

二,Tkinter的使用 先看一下GUI程序的开发,熟悉MFC的朋友应该不会陌生。...GUI程序,我们会有一个顶层窗口,在这个顶层窗口上可以包括所有的小窗口对象,像标签,按钮,列表框等等,也就是说顶层窗口我们放置其他窗口或者控件的地方。...我们用下面的语句可以创建一个顶层窗口,或者叫根窗口: Import tkinter top = tkinter.Tk() (如果前面是用的from tkinter import * ,那么Tk()就够了...Tk的每一个组件都有很多option,通过改变这些option可以改变组件的外观,比如显示的内容,颜色,大小,位置,事件处理函数等。...Anchor表示parcel放置组件的方式,缺省时CENTER。 2 grid 使用方法和pack类似。 3 place 精确的摆放一个组件的位置,一般不太用。

1.8K30

Python 窗体(tkinter)下拉列表框(Combobox)实例

=("1","2","3","4") comboxlist.current(0) #选择第一个 comboxlist.bind("<<ComboboxSelected ",go) #绑定事件,(下拉列表框被选中...常用的参数列表如下: 参数 描述 master 代表了父窗口 height 设置显示高度、如果未设置此项,其大小以适应内容标签 width 设置显示宽度,如果未设置此项,其大小以适应内容标签 state...如 data = [“a”,”b”,”c”], cbx[“values”] = data current(i) 指定下拉列表生成显示列表值,i = index。...如current(2),显示列表的第三个值 事件: 下拉列表没有command函数(方法)。 下拉列表的虚拟事件是 “<<ComboboxSelected “。 4....)下拉列表框(Combobox)实例就是小编分享给大家的全部内容了,希望能给大家一个参考。

10.8K40
领券