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

在tkinter (Python3)中将值从子窗口传递到父窗口:意外行为

在tkinter中,可以通过以下步骤将值从子窗口传递到父窗口:

  1. 在父窗口中创建一个变量,用于存储从子窗口传递过来的值。
  2. 在子窗口中创建一个输入控件(如Entry或Text),用于用户输入值。
  3. 在子窗口中创建一个按钮,用于确认用户输入并将值传递给父窗口。
  4. 在按钮的回调函数中,获取用户输入的值,并将其赋给父窗口中的变量。
  5. 在父窗口中,可以通过访问该变量来获取子窗口传递过来的值。

以下是一个示例代码,演示了如何在tkinter中实现将值从子窗口传递到父窗口的功能:

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

class ChildWindow(tk.Toplevel):
    def __init__(self, parent):
        super().__init__(parent)
        self.parent = parent
        self.entry = tk.Entry(self)
        self.entry.pack()
        self.button = tk.Button(self, text="确认", command=self.pass_value)
        self.button.pack()

    def pass_value(self):
        value = self.entry.get()
        self.parent.set_value(value)
        self.destroy()

class MainWindow(tk.Tk):
    def __init__(self):
        super().__init__()
        self.value = None
        self.button = tk.Button(self, text="打开子窗口", command=self.open_child_window)
        self.button.pack()

    def open_child_window(self):
        child_window = ChildWindow(self)

    def set_value(self, value):
        self.value = value
        print("从子窗口传递过来的值:", self.value)

if __name__ == "__main__":
    main_window = MainWindow()
    main_window.mainloop()

在上述代码中,主窗口MainWindow中有一个按钮,点击按钮会打开子窗口ChildWindow。在子窗口中,用户可以输入一个值,并点击确认按钮。确认按钮的回调函数会将用户输入的值传递给父窗口,并关闭子窗口。父窗口会将传递过来的值打印出来。

这是一个简单的示例,你可以根据实际需求进行修改和扩展。在实际开发中,你可以使用其他的tkinter控件、布局方式和事件处理方法来实现更复杂的功能。

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

相关·内容

Python的GUI编程和tkinter,Wxpython

Python Tkinter 通用控件属性: Python Tkinter 按钮组件 (Button) 按钮组件用于在 Python 应用程序中添加按钮,按钮上可以放上文本或图像,按钮可用于监听用户行为...w = Button ( master, option=value, ... ) # master 组件的父容器 # option 可选项,这个包括很多内容这些选项可以用键 = 值的形式设置,并以逗号分隔...() 这里稍微做一点说明,这个实例来自于菜鸟教程,而在菜鸟教程上的写法是 import tkMessageBox ,还是有很多区别的,在python3以后的版本中,tkinter应该首字母小写,而tkMessageBox...复选框(Checkbutton) # 定义方法 w = tkinter.Checkbutton( master, option=value, ... ) # 在python3中,复选框的定义方式发生了略微改变...place()布局方法: place()方法:根据控件实例在父容器中的绝对或相对位置参数进行布局。其常用布局参数如下: x,y:控件实例在根窗体中水平和垂直方向上的其实位置(单位为像素)。

28210
  • Python|GUI编程Button组件介绍

    先把一个组件放到一个窗口上,称这个窗口是这个组件的父容器,很多组件里的一些方法都要依靠这个父容器进行。...3.实例化操作 借用上一次写的窗口,在里面添加一些属性来详细讲解,注意Button里面的添加的属性。...在写的过程中可以试一试更有趣命令,还可以耍无赖向自己女神表白,如果修改了上面的关闭窗口的命令,再高冷的女神也会对你无可奈何,这就是程序员的浪漫吧。 ?...4.结语 上次有粉丝留言说感觉tkinter很强大,又想了解一下python GUI编程的另一个模块wxpython,客观来说wxpython性能和颜值都是要高于tkinter的,但是写一些不用在意外表的朴实的小程序...,相比之下tkinter更好一些,它的语法相对于更简单,非常容易上手,没学过python的小白都可以轻易地在一个星期内完成一个自己的GUI小程序。

    1K10

    Python中Tkinter的面向对象编程问题和解决方案

    (main_window) 是在 main() 函数中创建的,然后作为参数传递给 Nexus 类,在 Nexus 类中添加了一个框架 (Frame) 和一个标签 (Label) 到该框架中。...然后在 main() 函数中设置了顶层窗口的大小,相对当前屏幕的大小。问题是为什么在 main() 函数中创建顶层窗口?能不能在 Nexus 类的 __init__ 方法中创建顶层窗口?...如果在 Nexus 类的 __init__ 方法中创建顶层窗口并启动 mainloop(),那么 __init__ 方法就永远不会返回,这是意外的。...因为我们希望在两种情况下都能编写类似的代码,所以通常的做法是创建根窗口(Tk 对象)一次,然后将其作为引用传递给需要了解它的任何类。...在这段代码中,顶层窗口 (main_window) 在 main() 函数中创建,然后作为参数传递给 Nexus 类。

    13710

    Python进阶-GUI窗口

    让 GUI 程序启动和运行起来需要以下 5 个主要步骤: 导入 tkinter 模块(python3.x版本); 创建一个顶层窗口对象,用于容纳整个 GUI 应用; 在顶层窗口对象之上(或者“其中...获得 tkinter 的访问权是首要步骤。 ? ① 窗口和控件 在 GUI 编程中,顶层的根窗口对象包含组成 GUI 应用的所有小窗口对象。它们可能是文字标签、按钮、列表框等。...顶层窗口是那些在应用中独立显示的部分。GUI 程序中可以有多个顶层窗口,但是其中只能有一个是根窗口。 控件可以独立存在,也可以作为容器存在。如果一个控件包含其他控件,就可以将其认为是那些控件的父控件。...相应地,如果一个控件被其它控件包含,则将其认为是那个控件的子控件,而父控件就是下一个直接包围它的容器控件。 通常,控件有一些相关的行为,比如按下按钮、将文本写入文本框等。...这些用户行为称为事件,而 GUI 对这类事件的响应称为 回调。

    1.4K50

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

    在顶层窗口的上面构建不同的GUI组件 通过底层的应用代码将这些GUI组件连接起来 进入主事件循环 安装和使用 好了,回归正题,看看我们今天需要学习的tkinter,因为是内置库,所以我们不需要安装直接调用即可...python3对tkinter库进行了改写,两者的导入方式存在差异 python2导入: import Tkinter python3导入: import tkinter 窗口...;在Listbox窗口小部件是用来显示一个字符串列表给用户 Menubutton 菜单按钮控件,用于显示菜单项。...Text 文本控件;用于显示多行文本 Toplevel 容器控件;用来提供一个单独的对话框,和Frame比较类似 Spinbox 输入控件;与Entry类似,但是可以指定输入范围值 PanedWindow...() window.mainloop() 首先我们导入tkinter模块 然后新建一个顶层窗口 五六行是定义顶层窗口的标题和大小 第八行是我们编写的Button控件,将其放置在window顶层框架上,

    4.2K10

    【tkinter系列 第十课 TopLevel窗口部件 】

    前言 python中通常我们写程序,显示结果和操作都是在终端区,如果要想实现一个有显示界面的程序那该怎样实现呢?...登录界面 代码: from tkinter import *root = Tk()root.geometry("400x200")root.title("父窗口")root.withdraw() # 隐藏父窗口..."父窗口")root.withdraw() # 隐藏父窗口#给主界面添加一个标签内容Label(root,text="欢迎进入主界面").pack() top = Toplevel()top.geometry...if answer: # 如果点击确定,会返回一个True的值,否则False root.destroy()# 销毁主窗口 # 如果直接点击右上角关闭按钮,会直接关闭,通过这个方法,可以直接绑定...2.deiconify() 显示窗口 3.destroy() 销毁窗口 关闭父窗口,会将它下面的其它窗口都关闭 4.protocol("WMDELETEWINDOW", logout) 窗口的管理方法,

    3.5K20

    Python3中tkinter模块使用方法详解

    (在Tkinter中窗口部件类没有分级;所有的窗口部件类在树中都是兄弟。) ...    before:       将组件置于其他组件之前;     anchor:        组件的对齐方式,顶对齐'n',底对齐's',左'w',右'e'     side:        组件在主窗口的位置...方法为bind;或者用bind_class方法进行类绑定,bind_all方法将所有组件事件绑定到事件响应函数上。   ...10、菜单Menu  参数:      tearoff          分窗,0为在原窗,1为点击分为两个窗口     bg,fg           背景,前景     borderwidth     ...sys.stdout.flush()  刷新输出  Python3 从入门到开车  附1:tkinter中的颜色  附2:一个自己用tkinter写的计算器程序  #filename:Caculater

    4.5K21

    目录

    如你在本教程开始时的示例中所见,可以通过实例化Label类并将字符串传递给text参数来创建窗口小部件: label = tk.Label(text="Hello, Tkinter") Label窗口小部件显示具有默认系统文本颜色和默认系统文本背景颜色的文本...第一个参数确定起始索引,删除操作一直进行到但不包括作为第二个参数传递的索引。...在Tkinter中,你为应用程序中使用的事件编写了称为事件处理程序的函数。 注:一个事件是事件循环可能引发应用程序中的一些行为,当按下一个键或鼠标按钮,如期间发生的任何行动。...调用事件处理程序时,事件对象将传递给事件处理程序函数。 在上面的示例中,事件处理程序绑定到窗口本身,但是你可以将事件处理程序绑定到应用程序中的任何窗口小部件。...当你最终运行此应用程序时,该窗口的标题栏中将显示文本Temperature Converter。

    29.8K20

    错误、异常

    布局组件: 组件pack方法参数设置组件的位置: before:将组件置于其他之间之前; after:将组件置于其他组件之后; side:组件在主窗口的位置,可以为“top”、“bottom”、“left...定义右键事件处理函数 11 menu.post(event.x_root,event.y_root) #显示菜单 12 root.bind('',popupmenu) #在主窗口中绑定右键事件...需要注意的是,输入的字母要区分大小写 窗口事件: ? ? 相应事件: 事件绑定到函数后,触发时系统将向该函数传递一个event对象的参数,event对象属性: ?...使用tkinter.colorchooser模块中的函数创建对话框后,将返回颜色的RGB值以及可以在Python tkinter中使用的颜色字符值 1 #_*_ coding:utf-8 _*_ 2...#按钮初始化 22 self.root = root #保存父窗口引用

    6.3K10

    基于tkinter的GUI编程

    布局组件: 组件pack方法参数设置组件的位置: before:将组件置于其他之间之前; after:将组件置于其他组件之后; side:组件在主窗口的位置,可以为“top”、“bottom”、“left...定义右键事件处理函数 11 menu.post(event.x_root,event.y_root) #显示菜单 12 root.bind('',popupmenu) #在主窗口中绑定右键事件...需要注意的是,输入的字母要区分大小写 窗口事件: ? ? 相应事件: 事件绑定到函数后,触发时系统将向该函数传递一个event对象的参数,event对象属性: ?...使用tkinter.colorchooser模块中的函数创建对话框后,将返回颜色的RGB值以及可以在Python tkinter中使用的颜色字符值 1 #_*_ coding:utf-8 _*_ 2...#按钮初始化 22 self.root = root #保存父窗口引用

    5.4K10

    Python 图形化界面基础篇:使用框架( Frame )组织界面

    在本文中,我们将详细解释如何创建和使用框架来构建更复杂的 GUI 界面。 什么是 Tkinter 框架( Frame )?...import tkinter as tk 步骤2:创建 Tkinter 窗口 在使用 Tkinter 之前,需要创建一个 Tkinter 窗口对象,通常称之为 root 。...步骤4:在框架中添加其他组件 一旦创建了框架,你可以在其中添加其他 Tkinter 组件,例如标签、按钮、文本框等。要将组件添加到框架中,只需将框架作为父组件传递给组件的构造函数即可。...完整示例代码 以下是一个完整的示例代码,演示如何创建一个 Tkinter 窗口,然后在其中创建一个框架,并将标签和按钮添加到框架中: import tkinter as tk # 创建Tkinter窗口...我们使用 pack() 方法将标签和按钮垂直排列在框架中。 最后,我们使用 pack() 方法将框架 frame 添加到窗口中,并启动了 Tkinter 的主事件循环。

    2.6K31

    matplotlib 与 tkinter 集成小案例 (上篇)

    tkinter模块设计精简,满足一些小型GUI设计,首先创建一个窗体对象,添加基本组件,如Label,Button,Radiobutton等,再pack或grid组件到父容器中。...此案例,创建tkinter窗口及组件的代码,如下: window = tk.Tk() # 第2步,给窗口的可视化起名字 window.title('My Window') # 第3步,设定窗口的大小...(长 * 宽) # 这里的乘是小x window.geometry('1200x600') # 第4步,在图形界面上创建一个标签label用以显示并放置 # 定义一个var用来将radiobutton...的值和Label的值联系在一起. var = tk.StringVar() l = tk.Label(window, bg='yellow', width=30, height=3,...下面就是最重要的tkinter和matplotlib集成部分,matplotlib提供FigureCanvasTkAgg对象,只需三行代码,实现图形绘制在tkinter的Canvas中: canvas_l

    2.1K30

    python笔记:可视化界面写作尝试

    库事实上是一个非常简单的可视化界面写作仓库,实现简单但是功能相对单一,对于真正复杂的行为设计支持不充分,事实上在大型的可视化界面开发中基本不会使用这个仓库,挽尊。。。...他有点像是使用matplotlib进行绘图的方式,首先创建一个基础画布(基础的窗口),然后定义不同的绘图曲线(窗口插件),然后将定义的曲线(窗口插件)放置到画布(窗口)上进行显示。...所有的变量都包含下述两个方法: set():设置变量的值; get():获取变量的值; 下面,我们给出tkinter的变量类型如下: StringVar:default="" IntVar:default...当点击行为发生时,就会触发行为函数fn,需要注意的是,他的行为发生方式为下沿触发,即当点击被释放时,触发行为函数。...Frame组件 tkinter同样提供了一些容器类的组件,他们的作用是在原先的窗口中另外开辟出一个独立的空间来部署其他插件,其功能和labview当中的container模块作用一模一样。

    4.6K30

    Tkinter之Menu组件用法 原

    本系列博客主要总结Tkinter库中提供的UI组件,关于Java的GUI开发,感兴趣的可以在如下系列博客中找到: https://my.oschina.net/u/2340880/blog?...Tkinter中有提供Menu菜单组件中可以添加如下几种组件: 1_动作项:简单的行为按钮,用户点击后会执行相应的方法。 2_子菜单:行为完整的子菜单项。...Menu构造函数中第1个参数可以传入菜单所属的窗口或者父菜单,后面可以添加一些菜单配置,例如: 属性 意义 activebackground 活跃时的背景色 activeborderwidth 活跃时的边框宽度...#添加一个分割线 add_separator() #删除index1 到 index2之间的选项 delete(index1,index2) #获取菜单某一项的属性值 entrycget(index,coption...#在指定位置插入一个分割线 insert_separator(index) #代码手动调用一次某个选项 invoke(index) #在窗口指定位置弹出菜单 post(x,y) #获取个选项的类型 type

    1.9K20
    领券