获取窗口对象的返回值是一个很常见的模型,比如程序弹出一个窗口,读取用户的输入值,这个值可以很容易的保存在弹出的窗口中,但问题在于如何将这个值传递给弹出窗口的parent。这是一个看似很simple的问题,但真正操作起来才发现是自己too

young~~~

******************************************************************************************************

先简单的描述需要解决一个什么问题,下面只是一个框架:

它运行的结果如下:

点击Enter,会弹出窗口如下:

OK,问题就是在这里输入后,将这个输入的值传递给调用它的主程序。

*******************************************************************************************************

为了解决这个问题,首先需要明白一个概念:所有独立运行的窗口(Toplevel

widget),都是一个独立的线程。

为了使这个概念更加的明显,将整个弹出窗口封装成一个类型,然后在主窗口中点击Enter时,创建这个窗口,代码如下:

这里将创建Toplevel窗口的代码封装在了一个类型PopUp中,为了说明"所有独立运行的窗口(Toplevel

widget),都是一个独立的线程"这句话,在创建PopUp后,调用tkMessageBox.showinfo()来弹出一个指示性的窗口,下面是点击主窗口Enter键之后的结果:

由结果可以看出,程序不会阻塞在创建TopLevel那里,等待你完成输入销毁,而是直接创建一个新的线程来运行。这也是Toplevel

widget的特殊之处,一般的widget运行都需要调用.mainloop()函数。

******************************************************************************************************

所有独立运行的窗口(Toplevel

widget),都是一个独立的线程。这是GUI设计一个惯有的问题,它使得用户的所有操作只能异步的进行。所以针对本文开头所提出的问题,实现这个功能的代码只能在PopUp类型的Button

Widget的callback函数中,弄清楚这一点就胜利了一大半。

上面已经完成了全部的框架,只剩下第30行注释的部分,这部分代码的功能将PopUp读取用户的值传递给Gui

*****************************************************************************************************

下面是完整的解决办法,从Gui中传递一个可变的对象(这里是关键,想想为嘛不能传递string进去),然后在PopUp中记录传入的值,这样这个值就保存在可变的对象中了,这里类似与C++的传引用方法。

下面是结果:

点击pop_up,弹出PopUp,输入:

完成输入后,点击show显示结果:

反正这一块最重要的是需要明白为啥使用list,而不是使用string,下面这篇文章就说明了区别:

http://blog.sina.com.cn/s/blog_ac9fdc0b0101n44r.html

******************************************************************************************************

上面是利用Tkinter内置的Toplevel

Widget实现,实际上也可以创建自己的类型,唯一的区别在于自己创建的类型需要显式的调用mainloop()函数,不过说的容易,实现起来难很多。

python tkinter 弹窗_Python:tkinter-Parent获取弹出窗口的返回值相关推荐

  1. python右下角弹窗_python+pyqt实现右下角弹出框

    本文实例为大家分享了pyqt实现右下角弹出框的具体代码,供大家参考,具体内容如下 构造函数中: self.desktop=QDesktopWidget() self.move((self.deskto ...

  2. 父窗体中弹出新窗体,然后获取弹出窗体的返回值。

    通过弹出的窗体向父窗体传递参数 通过window.returnvalue向打开对话框的窗口返回信息,当然也可以是对象.例如:  test4.htm  ===================  < ...

  3. php 弹窗代码大全,PHP_asp.net弹出窗口代码大全,//关闭,父窗口弹出对话框,子窗 - phpStudy...

    asp.net弹出窗口代码大全 //关闭,父窗口弹出对话框,子窗口直接关闭 this.Response.Write(""); //关闭,父窗口和子窗口都不弹出对话框,直接关闭 th ...

  4. flexible wincc 弹窗,WinCC flexible 如何实现弹出窗口-工业支持中心-西门子中国

    你参考这个,和弹出效果类似 但是并非真正的弹出 winccflexible 做弹出不好实现 你可以这样做: 在想要弹出画面的画面 也就是主画面A做好组态 然后用一个矩形B把这个画面覆盖 然后在矩形B上 ...

  5. python selenium 处理弹窗_python+selenium 抓取弹出对话框信息

    抓取弹出对话框信息,困挠了我很久,我百度了很久,一直没有找到我想要的内容.最近学习到了. 有两种方法: 1.driver.switch_to.alert.text 2.result = EC.aler ...

  6. python的窗口处理模块_Python tkinter模块弹出窗口及传值回到主窗口操作详解

    本文实例讲述了Python tkinter模块弹出窗口及传值回到主窗口操作.分享给大家供大家参考,具体如下: 有些时候,我们需要使用弹出窗口,对程序的运行参数进行设置.有两种选择 一.标准窗口 如果只 ...

  7. 怎么获取layer中的表单值_layer获取弹出frame层数据

    通常,弹出层关闭之前,需要将部分数据传入父页面.这个时候怎么办呢? 通过success获取frame层的index. 然后通过cancel事件,获取子页面数据. 拿获取高德地图坐标为例: // 显示地 ...

  8. JavaScript:简单实现弹出窗口div

    JavaScript实现弹出窗口 思路 总体使用两个div,一个作为底层展示,一个做为弹出窗口: 两个窗口独立进行CSS设计,通过display属性进行设置显示与隐藏,此处建议使用display属性而 ...

  9. html自动弹出窗效果,JavaScript实现弹出窗口效果

    本文实例为大家分享了JavaScript实现弹出窗口的具体代码,供大家参考,具体内容如下 思路 1.总体使用两个div,一个作为底层展示,一个做为弹出窗口: 2.两个窗口独立进行CSS设计,通过dis ...

最新文章

  1. [K/3Cloud]DBServiceHelper.ExecuteDataSet(this.Context, sql)) 返回数据问题
  2. inode与ln命令
  3. Google开源的FlexboxLayout
  4. php二维数组按照键值排序的方法
  5. fastboot模式下无法找到设备,不能使用fastboot命令,需要安装驱动
  6. Hive Hsql 常用命令
  7. window下mysql免安装版教程大全
  8. db2 导出 oracle,db2导出数据库数据库
  9. diagram怎么记忆_怎样记英语单词本子单词记忆法原则让每个学生真正的
  10. 推荐一个在线办公协作的
  11. Vue 3的provide和inject用法
  12. 【如何在寒武纪MLU上进行算法移植】-概述
  13. ubuntu下bochs的安装和配置
  14. html中头向下的箭头怎么打出来,向下的箭头怎么打,最简单实用的电脑知识
  15. TensorFlow报AttributeError: module tensorflow has no attribute io
  16. Linux下查看某一进程占用的内存
  17. 使用gpio_direction_output()无法设置GPIO原因分析
  18. 某音乐软件 收费音频无会员绕过下载过程分析
  19. Apple Watch无法开机怎么办?苹果手表不能开机解决方法!
  20. JavaScript之DOM和BOM

热门文章

  1. 亮剑吧,掏出你吃灰的单片机板子。
  2. 为什么嵌入式工程师会对8位MCU有误解?
  3. python办公自动化博客_自动化办公 Python 操控 Word
  4. braintree php 开发,php – 如何为使用Braintree和静态方法调用的端点编写集成测试...
  5. lin通信ldf文件解析_手把手教你在CANoe中创建一个LIN通讯工程
  6. rabbitnq 源码安装_linux下源码安装rabbitMq
  7. spring mvc传值html页面,spring mvc向前台页面传值-ModelAndView
  8. 选择题微型计算机系统包括,全国计算机一级选择题专项训练及答案2016
  9. Python3 OOP(四) 获取对象信息
  10. 第4.3节 Python中与迭代相关的函数