我有一个程序,在你点击一个动作按钮后,它会运行一个很长的过程。当进程正在运行时,根窗口会说它没有响应,即使我知道程序正在后台运行。这个程序将发布给我的几个同事,我想确保他们看到这个时不会惊慌失措并关闭窗口。我的解决办法是坐在树根上。正在运行的进程的循环中进行更新,但我不确定这是否是最佳修复方法。
使用Python3.3
这是一个代码的示例,所以你可以了解我在做什么,这是从主循环中调用的:
def combine(boxes_to, boxes_from, frame):
to_value,to_pos = gui.checkBoxes(boxes_to)
from_value,from_pos = gui.checkBoxes(boxes_from)
frame.destroy()
running = Label(root,text="Running please do not close..",font = (16))
running.pack()
root.update()
map_to = open("map_to",'r')
for line in map_to:
root.update()
process(line)
running.destroy()
map_to.close()
finish = Button(root, text="Done",command=gui.stop)
finish.pack()
联合()
,由于这个函数,窗口正在冻结btn = Button(root, text="Click Me",command=combine)
import threading
btn = Button(root,text="Click Me", command=threading.Thread(target=combine).start())
而您可以调用root。在循环中,这仍然会产生一些(潜在的)不良副作用。
作为替代方案,我建议您实现简单的多线程。Python多线程非常简单,可以防止这两个缺点。您将能够执行长时间运行的代码,同时仍然提供一个干净且响应迅速的UI。
如果应用程序可以并行化,则可以使用多个线程来减少运行时间。线程1处理条目1-100,而线程2处理条目101-200。
我正在运行基于这里所示示例的代码,在OS X上使用Eclipse,我正在使用JFreeChart和JCommon库。 正如我在标题中所说,程序正在运行,但没有显示任何内容。作为检查,我尝试使用printData()方法打印数据,它工作得非常好。它正确地从yahoo csv文件中获取数据。 我甚至尝试过使用一小部分数据(20行),但它一直不显示。 问题可能只是在显示JFrame窗口时。 我插入的试图
当我运行我的pyplay程序的游戏窗口显示没有反应,我也写了退出功能,但我不知道为什么它再次广告再次显示没有反应,我的笔记本电脑是Windows 8和32位
问题内容: 我正在尝试通过py2exe创建一个exe。该程序正在使用Tkinter显示类似弹出窗口的窗口。问题是,当我像这样运行安装程序时,一切正常: 但是当我尝试制作一个文件的exe时失败: 实际上,最终exe可以正常运行,但是不会显示任何窗口。我已经阅读过Windows 7上的bundle_files = 1可能存在问题,但我也尝试了bundle_files = 2来达到同样的效果。这是我的m
我有一个docker容器,它可以打开一个tkinter窗口,但它一直崩溃,因为它无法连接到主机的显示器。本文给出的答案建议将X-11套接字绑定到容器< code >-v/tmp/. X11-unix:/tmp/. X11-UNIX:ro ,并将其显示环境变量设置为主机< code>-e DISPLAY=$DISPLAY的显示环境变量,但由于这两个变量都是UNIX特定的路径/变量,因此它们在其他操作
#include <stdio.h> void fun1(void) { int i = 0; i++; i = i * 2; printf("%d\n", i); } void fun2(void) { int j = 0; fun1(); j++; j = j
我正在jMeter中执行负载测试,其中有两个线程组,每个线程组都有50个用户,上升周期为60秒。使用Blazemeter,我记录了一个填写和提交表格的会话,然后稍微修改了一下。其中一组是使用POST方法登录,然后提交表单,另一组是匿名用户填写的。当我运行测试时,我遇到了错误: 响应代码:非HTTP响应代码:org.apache.HTTP。ConnectionClosedException响应消息: