python弹出窗口后卡死_python的tkinter模块GUI编程为啥用了while循环之后就会使得程序出现卡死未响应崩溃?...

这位同学,首先无代码无真相。只能在这里猜测一下,你在GUI界面中点击了某个按钮,调用的函数然后触发了某种while循环,这个时候前台GUI将“未响应”卡死。不过一旦调用函数的while循环结束,GUI界面将再次可用。

不使用线程的话,后台while循环处理和前台GUI显示是依次串行的,做完一件事情才能做另一件。使用线程是GUI通常的做法,可以使后台while循环处理中的信息实时显示在前台GUI上。

关于tkiner的after方法,只是将函数的调用时间向后延时一些,进入调用的函数后与直接调用函数没有区别。

此外,根据题主说的request的事情,继续猜一下。首先来说下线程的事情,处理request的线程不能这样使用

p=Thread(target=a_while_func_about_request, args=(some_args))

p.start()

p.join()

这样使用线程虽然将主线程的while循环移到线程p的内部,但由于主线程一直等待p.join()什么也做不了,相当于主线程直接调用了a_while_func_about_request函数。要利用到线程的并发性能,主线程不能傻傻的p.join(),至少还需要一个标志变量,通过标志变量判断线程p是否完成request请求,例如:

# 主线程

request_done = False

p=Thread(target=a_while_func_about_request, args=(some_args))

p.start()

while request_done == False:

# 继续处理主线程逻辑

...

else:

# 根据request内容进行显示

...

p.join()

# 子线程部分

def a_while_func_about_request(some_args):

# request获取内容部分

...

request_done = True

2. GUI方面也需要根据程序逻辑设计:

情况一:在获取请求request内容的过程中GUI必须等待数据无法进行下一步操作,类似玩游戏时等待读进度条,无法跳过,GUI也无需提供其它操作。这种情况可以在等待期间显示一个“处理中...”的进度条,然后主线程定时检查request_done标志位(可以使用到after方法),等到request_done为True时,主程序知道request获取完毕,可以继续GUI后续的显示。

情况二:在获取request内容时,GUI继续显示某个主界面,稍后通过某个“读取结果”的按钮对结果进行显示,这样类似于游戏在读进度条的时候窗口切出去刷网页什么的,过一会儿再切回来看看进度条是否读好了。这种情况下,每次切回来看看进度条情况的相当于检查request_done标志位,根据是否完成设计GUI后续的显示流程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/503667.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 字符串格式化语法_Python基础语法--字符串格式化

PS:在学习到Python的字符串格式化一些个人的总结,利用字符串格式化可以更好的对代码结果进行格式化输出语法栗子 例子中通过接收用户输入的值,赋值给sex_input和age_input生成两个变量,并根据判断输出相应的语句,and是…

springmvc跳转html_SpringMVC基础(三)

本篇文章主要整理了数据处理、乱码处理和Json的相关知识。参考的狂神说的公众号以及视频。所有代码亲测有效。数据处理主要包括处理提交的数据以及将数据显示到前端。处理提交的数据一般有三种情况:(1)提交的域的名称和方法的参数名称一致时:RequestMapp…

mysql-5.7.24初始化数据库_MySQL5.7.28 初始化数据库

1)初始化随机密码 mysqld --initialize[roothost-172-16-61-102 bin]# ./mysqld --initialize2020-02-15T07:01:38.309015Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documenta…

查看本机所有请求_【松勤教育】Fiddler抓包-只抓APP的请求

fiddler抓手机app的请求,估计大部分都会,但是如何只抓来自app的请求呢?把来自pc的请求过滤掉,因为请求太多,这样会找不到重要的信息了。环境准备:1.电脑上已装fiddler2.手机和电脑在同一局域网一、设置1.fi…

ubuntu18.04升级python_Ubuntu18.04一次性升级Python所有库的方法步骤

pip是什么pip 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能。升级pip版本默认Ubuntu自带的pip (pip 9.0.1)是基于Python2.7的版本我们需要重新安装基于Python3的pip:sudo apt-get install python3-pip升级pip3版本&…

icmp报文格式_TCP/IP(二):IP报文格式详解

1. IP 报文格式0bit是指位于最左边的最高位,31bit是指位于最右边的最低位,4个字节的32bit按照 bigendian(大端格式:低字节位于高地址)字节序传输:首先是0~7bit,其次 8~15bit,然后 16~23bit,最后…

java多线程交替打印_java实现多线程交替打印

本文实例为大家分享了java实现多线程交替打印的具体代码,供大家参考,具体内容如下notifywait实现import org.junit.Test;import java.util.concurrent.*;public class TestThreadLocal {Object o new Object();CountDownLatch cnew CountDownLatch(2);T…

plot函数_时间序列:python移动窗口函数前言

一起学习,一起成长!在移动窗口(可以带有指数衰减权数)上计算的各种统计函数也是一类常见于时间序列的数组变换。它们称为移动窗口函数,其中还包括那些窗口不定长的函数(如指数加权移动平均)。跟其他统计函数一样,移动窗口函数也会…

织梦检测环境不支持mysql_本地测试织梦dedeCMS 安装环境

本地测试织梦dedeCMS 安装环境2018-08-21 134织梦好多想本地测试织梦DEDECMS网站,今天介绍如何在本地安装测试环境,安装织梦系统。第一:环境测试 DedeAMPZ 织梦官方测试软件DedeAMPZ 是直接整合PHP Apache MySql 的服务器环境管理软件&…

一页纸项目管理模板_项目管理职场必备读物!这一次全部送给你!

“大圣,此去欲何?”“踏南天,碎项目。”“若一去不归...”“便一去不复返归!”hello~hello~大家好上一次找到的一篇项目管理书籍送给大家毫无意外地大家纷纷在后台留言要求我还有没有更多的书籍答应你们,这次一次性全部…

浏览器无法运行java_window_浏览器无法运行JAVA脚本的解决方法,1、浏览器无法运行JAVA脚本的 - phpStudy...

浏览器无法运行JAVA脚本的解决方法1、浏览器无法运行JAVA脚本的解决方法。rundll32.exe advpack.dll /DelNodeRunDLL32 %systemroot%System32dacui.dllrundll32.exe advpack.dll /DelNodeRunDLL32 %systemroot%Catrooticatalog.mdbregsvr32 /s comcat.dllregsvr32 /s asctrls.o…

python android自动化_python在Android下的自动化测试用法

# This Python file uses the following encoding: utf-8from com.android.monkeyrunner import MonkeyRunner,MonkeyDevicefrom com.android.monkeyrunner.easy import EasyMonkeyDevice #提供了根据ID进行访问from com.android.monkeyrunner.easy import By #根据ID返回PyObj…

第五届蓝桥杯校内选拔赛试题java组_第五届蓝桥杯校内选拔赛试题java组

第五届“蓝桥杯”全国软件和信息技术专业人才大赛校内选拔赛试题(Java组)第一部分:准备工作:1、在D:盘中建立一个以自己“学号姓名”命名的考生文件夹。如:学号:123456,姓名:张三,则…

nfs需要开通什么端口_创业板开通需要什么条件?开通创业板门槛,要怎么样开通创业板?...

开通创业板需要什么条件,创业板要怎么开通?根据这两个问题进行详细分析创业板股票开通的条件和具体怎么开通,开通创业板之前必须要满足创业板开通条件。一、旧创业板开通条件就得创业板开通是非常简单的,只要满足以下两点&#xf…

java自学报告_Vi,Java,Ant和Junit自学报告

vi自学报告概述vi 编辑器是所有 Unix 及 Linux 系统下最基本的编辑器,它直接以命令行窗口作为显示界面。vim是vi的升级版,完全兼容vi并提供了一些新的特性。因为vi、vim完全脱离鼠标而使用纯键盘控制,所以熟练以后能大大提高编辑效率。vi的模…

java开发文档怎么写_程序员该不该写技术文档,怎么写文档,易懂又能提升自己...

最近公司项目的调用量突然涨了一大波,很多系统都纷纷扛不住了,于是需要对系统进行优化,系统优化的第一步,便是梳理业务!在这个过程中,经常出现了这样一些情况,发现数据库的某些字段,…

java矩阵类_java矩阵类,矩阵的乘法

问题如下我采用的是3重循环,先计算的列的结果,应该还可以先计算行的结果,然后求出矩阵的乘法。没有过多的技巧,就是循环的使用。相关的codepackage day20180728;import java.util.Scanner;class Matrix{private int m,n;private i…

python个人网站系统_利用基于Python的Pelican打造一个自己的个人纯静态网站

其实呢这么多年以来我一直建议每个有技术追求的开发者都要有写技术博客记笔记的良好习惯,一来可以积累知识,二来可以帮助别人,三来可以把开发中遇到的问题记录用来自省,第四可以通过交换友链来结识更多的技术领域的同仁。之前我曾…

java 编译宏_java – 制作一个“宏”命令来运行程序

(编辑:根据您的评论,让我展开以添加更多情况)如果您的目标是让其他人运行您没有安装Java的程序,并且您不希望让他们在运行您的应用程序之前安装Java运行时环境,那么您需要的是一个转换.class或.jar的程序将文件转换为您正在使用的平台的本机可执行文件.其他问题涉及…

python在工厂中的运用_在python中使用元类实现工厂设计模式

我很乐意听到人们对此的评论,但我认为这是你想做什么的一个例子class FactoryMetaclassObject(type):def __init__(cls, name, bases, attrs):"""__init__ will happen when the metaclass is constructed:the class object itself (not the instanc…