pygame与tkinter关于窗口的问题

pygame和tkinter实际上都是一个可视化界面,在第一层父窗口上几乎没有区别,tkinter使用Tk()+mainloop()+按键对象+放置 而pygame使用set_mode+update+按键对象+按键对象属性设置(一般是位置),但是关于使用子窗口是有明显区别的。
tkinter创建子窗口时如果只是显示,不对窗口操作(点击按钮,输入等),则直接使用Tk()创建窗口即可。如一些数据展示窗口。但是如果需要对子窗口进行操作eg:数据写入,按钮+响应等等,就需要使用到顶层子窗口Toplevel()。

从线程角度说明他们的不同点

tkinter使用单线程,如果只是开启窗口显示,不涉及对主线程的内容修改,则可以开启多个这样的子窗口(严格上说这不是真正意义的子窗口,因为与主窗口没有进行数据关联,因为是各干各的只是借助主窗口的函数调用创建该窗口,算是一个额外的线程)。但是如果需要子窗口对主线程中的数据(也可能是我们导入的数据)进行修改,就需要用到Toplevel(相当于一个额外的线程+主线程中的内部类),它可以修改主线程中的内部数据,传递参数等等。
概括:使用tkinter做图形窗口时,如果窗口涉及操作直接使用toplevel()。其他只需可视化的情况使用Tk()直接创建新窗口也是可行的。
实例说明:
在做一个计算器的扩展功能-贷款计算时,遇到了这个问题。
问题描述:
在贷款计算之前,添加了一个纯展示的子窗口(tk实现)功能,打开后父窗口可以正常运行。然后使用了同样的方法做了贷款窗口,因为过程中涉及到了窗口的输入,对主线程中的数据进行了修改,虽然父窗口正常运行)但是子窗口报错了。
解决:
将贷款的实现窗口修改为tk.toplevel()

pygame也是单线程的,但是其没有类似tkinter中的toplevel,不能创建同时运行的两个窗口。创建子窗口(如:tkinter窗口)时pygame会暂停了父窗口任务,将资源给了给刚创建的子窗口,在子窗口返还资源之前(关闭之前),父窗口会一直处于未响应状态(等待返还主线程的资源)。
实例说明:
在做拼图游戏的原图显示功能时,发现了该问题。当显示原图(子窗口)时,主窗口处于未响应状态,关闭子窗口后,主窗口正常响应。
建议:
尽量不要使用在pygame上建立多个窗口,因为他只能同时运行单个线程,创建很多的窗口也只能实现窗口并发操作,不能实现并行

关于pygame和tkinter窗口的那件事-线程相关推荐

  1. 关于 android 虚拟机显示在了界面里面,怎么把模拟器放到到android studio窗口外面这件事

    关于 android 虚拟机显示在了界面里面,怎么把模拟器放到到android studio窗口外面这件事 如图所示: 解决方法: 再次重启 AndroidStudio 即可

  2. python获取窗口控件属性_Python——tkinter窗口视窗的功能部件

    tkinter简介 Tkinter 是使用 python 进行窗口视窗设计的模块.Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口.作为 pytho ...

  3. python tkinter控件_Python——Tkinter窗口的函数,Pythontkinter,视窗,功能,部件

    tkinter简介 Tkinter 是使用 python 进行窗口视窗设计的模块.Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口.作为 pytho ...

  4. python tkinter 窗口禁止编辑_tkinter的text控件,绑定事件后不能编辑了

    tkinter的text控件,又有新的问题 DateCtrl.py from tkinter import * import tkinter.font as tkFont import calenda ...

  5. python提示对话框自动关闭_Python实现定时自动关闭的tkinter窗口方法

    Python实现定时自动关闭的tkinter窗口方法 更新时间:2019年02月16日 09:13:27 作者:Python_小屋 今天小编就为大家分享一篇Python实现定时自动关闭的tkinter ...

  6. python showinfo 方法_Python GUI之tkinter窗口视窗教程大集合(看这篇就够了)

    Tkinter支持16个核心的窗口部件,这个16个核心窗口部件类简要描述如下: Button:一个简单的按钮,用来执行一个命令或别的操作. Canvas:组织图形.这个部件可以用来绘制图表和图,创建图 ...

  7. Python Tkinter 之Listbox控件(Python GUI 系列12)

    Python Tkinter 之Listbox控件(Python GUI 系列12) 1. 序言 本章介绍Tkinter的Listbox控件,本文是Python GUI系列的第12篇文章,整个系统约2 ...

  8. Python GUI之tkinter窗口视窗教程大集合

    Python GUI之tkinter窗口视窗教程大集合 一.前言 二.Tkinter是什么 三.Tkinter 控件详细介绍 1. Tkinter 模块元素简要说明 2. 常用窗口部件及简要说明: 四 ...

  9. python中tkinter模块窗口操作_Python GUI之tkinter窗口视窗教程大集合(看这篇就够了)...

    本篇博文搬到个人博客:[洪卫の博客](https://sunhwee.com)上面去了,想要获得最佳阅读体验,欢迎前往 [https://sunhwee.com](洪卫の博客), 建议用电脑查看教程文 ...

最新文章

  1. 关于 OpenIdConnect 认证启用 HTTPS 回调 RedirectUri 不生效问题
  2. MySQL索引的分类、何时使用、何时不使用、何时失效?
  3. gRPC中Java和node进行异构通信-互为客户端和服务端
  4. python里面的import provide_Python importorror:没有名为wmi的模块
  5. 测试每个阶段需要输出的文档
  6. mobilenet cpu 加速_(300223)半导体+芯片概念,净利润增长408%!加速上涨!
  7. 学python必须得英语精通吗_“学习python必须精通的几个模块“
  8. C++语言定义的标准转换
  9. eclipse 闪退原因
  10. java分布式日志组件
  11. 张子阳:如何在30岁前年薪超过30万
  12. php制作特效文字,PPT制作文字特效 PPT特效文字制作教程
  13. 新猿木子李:0基础学python培训教程 Python操作Redis只列表类型
  14. 工作感受月记 201906月
  15. Latex标题页上标和脚注的处理方法 如何在latex文件中添加footnote
  16. ios vs android设计
  17. 如何编辑小红书种草文案?小红书怎么编写种草文案?
  18. CentOS 7中yum安装java
  19. 算法小白理解最大流最小割(Maximum flow Minimum cut)问题
  20. php初学者,php技术支持,php学习网站

热门文章

  1. 【项目介绍】FTP服务器
  2. Python计算一个文件中大写字母的数量
  3. 生生世世 —— schedule 的轮回(七)
  4. 计算机基础--认识CPU
  5. 设定游戏背景和英雄登场
  6. 若5G的速度不够:那6G和16K是必然么?
  7. 2019 VOD编码工具指南
  8. 三十年TCP与七年QUIC 谁才是未来?
  9. 熊猫TV直播H5播放器架构探索
  10. Facebook视频支持AV1