关于pygame和tkinter窗口的那件事-线程
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窗口的那件事-线程相关推荐
- 关于 android 虚拟机显示在了界面里面,怎么把模拟器放到到android studio窗口外面这件事
关于 android 虚拟机显示在了界面里面,怎么把模拟器放到到android studio窗口外面这件事 如图所示: 解决方法: 再次重启 AndroidStudio 即可
- python获取窗口控件属性_Python——tkinter窗口视窗的功能部件
tkinter简介 Tkinter 是使用 python 进行窗口视窗设计的模块.Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口.作为 pytho ...
- python tkinter控件_Python——Tkinter窗口的函数,Pythontkinter,视窗,功能,部件
tkinter简介 Tkinter 是使用 python 进行窗口视窗设计的模块.Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口.作为 pytho ...
- python tkinter 窗口禁止编辑_tkinter的text控件,绑定事件后不能编辑了
tkinter的text控件,又有新的问题 DateCtrl.py from tkinter import * import tkinter.font as tkFont import calenda ...
- python提示对话框自动关闭_Python实现定时自动关闭的tkinter窗口方法
Python实现定时自动关闭的tkinter窗口方法 更新时间:2019年02月16日 09:13:27 作者:Python_小屋 今天小编就为大家分享一篇Python实现定时自动关闭的tkinter ...
- python showinfo 方法_Python GUI之tkinter窗口视窗教程大集合(看这篇就够了)
Tkinter支持16个核心的窗口部件,这个16个核心窗口部件类简要描述如下: Button:一个简单的按钮,用来执行一个命令或别的操作. Canvas:组织图形.这个部件可以用来绘制图表和图,创建图 ...
- Python Tkinter 之Listbox控件(Python GUI 系列12)
Python Tkinter 之Listbox控件(Python GUI 系列12) 1. 序言 本章介绍Tkinter的Listbox控件,本文是Python GUI系列的第12篇文章,整个系统约2 ...
- Python GUI之tkinter窗口视窗教程大集合
Python GUI之tkinter窗口视窗教程大集合 一.前言 二.Tkinter是什么 三.Tkinter 控件详细介绍 1. Tkinter 模块元素简要说明 2. 常用窗口部件及简要说明: 四 ...
- python中tkinter模块窗口操作_Python GUI之tkinter窗口视窗教程大集合(看这篇就够了)...
本篇博文搬到个人博客:[洪卫の博客](https://sunhwee.com)上面去了,想要获得最佳阅读体验,欢迎前往 [https://sunhwee.com](洪卫の博客), 建议用电脑查看教程文 ...
最新文章
- 关于 OpenIdConnect 认证启用 HTTPS 回调 RedirectUri 不生效问题
- MySQL索引的分类、何时使用、何时不使用、何时失效?
- gRPC中Java和node进行异构通信-互为客户端和服务端
- python里面的import provide_Python importorror:没有名为wmi的模块
- 测试每个阶段需要输出的文档
- mobilenet cpu 加速_(300223)半导体+芯片概念,净利润增长408%!加速上涨!
- 学python必须得英语精通吗_“学习python必须精通的几个模块“
- C++语言定义的标准转换
- eclipse 闪退原因
- java分布式日志组件
- 张子阳:如何在30岁前年薪超过30万
- php制作特效文字,PPT制作文字特效 PPT特效文字制作教程
- 新猿木子李:0基础学python培训教程 Python操作Redis只列表类型
- 工作感受月记 201906月
- Latex标题页上标和脚注的处理方法 如何在latex文件中添加footnote
- ios vs android设计
- 如何编辑小红书种草文案?小红书怎么编写种草文案?
- CentOS 7中yum安装java
- 算法小白理解最大流最小割(Maximum flow Minimum cut)问题
- php初学者,php技术支持,php学习网站