PYGTK 的线程刷新界面的完美解决

GTK eclipse下线程实现界面部分刷新的效果 GTK界面编程要想实现刷新的效果,用线程实现是个好的方法,下面简要介绍eclipse下其实现步骤: 1:配置eclipse环境:       在点击“项目”(project)的“属性”(properties)选项,在弹出的窗口中选中C/C++ Build中的“设置”(setting)这个选项,       在其中的GCC C Linker中的Miscellaneous中填入如下内容: 阅读详情

问题: 你有一个长的处理过程, 该过程将诸塞GTK主循环对事件的控制, 导致界面在处理过程中没有响应, 更糟糕的是, 即使你想在处理过程中刷新界面, 提示进度都毫无用处, 因为它是诸塞的线程, 要么你看不见任何更新, 要么等到处理完成时他们一股脑儿都显示出来. 显然这不是我们想要的.

解决: google 了无数文章, 各种方法齐上阵, 但都显得麻烦, 最后, pygtk 的官方Q&A文档给出了最佳答案, 用生成器. 该文地址: http://faq.pygtk.org/index.py?req=show&file=faq23.020.htp

 

我的演示代码, 下面的代码演示一个在滚动窗口中按行输出0~99的数字. 用了空循环来模拟延时, 我们希望看到的是在界面中他们能一行一行的出现, 而不是"诸塞--dump"

 

 

 

关键点,

1. 把你的处理过程包裹成一个函数:function.

2. 用gobject.idle_add(function, next) 来告诉gtk我需要空闲处理这个函数.

3. 在你的处理过程中, 用yield True 来告知主线程有空闲, 但是我这个子线程还没完. 当子线程跑完了, 用yield False 告知主线程.

 

 

同样, 如果你是一个长的处理过程, 中间一般都要更新界面, 省得看上去和冻结了一样, 使用这种方法是最简单, 最安全, 没有副作用的. 参考官方文档的详细描述.

 

 

 

chatgpt赋能Python-python_1and2 本文由chatgpt生成,文章没有在chatgpt生成的基础上进行任何的修改。以上只是chatgpt能力的冰山一角。作为通用的Aigc大模型,只是展现它原本的实力。对于颠覆工作方式的ChatGPT,应该选择拥抱而不是抗拒,未来属于“会用”AI的人。🧡AI职场汇报智能办公文案写作效率提升教程 🧡专注于AI+职场+办公方向。下图是课程的整体大纲下图是AI职场汇报智能办公文案写作效率提升教程中用到的ai工具。 阅读详情

相关推荐

BeagleBone Green LCD Cape开发实战:驱动配置、图形界面与性能优化

嵌入式系统的人机交互(HMI)开发是连接硬件与用户的关键环节,其核心在于通过图形界面实现信息的可视化与操作的直观化。其技术原理通常涉及显示驱动、输入设备管理和图形渲染框架。在嵌入式Linux平台上,设备树(Device Tree)是描述和配置硬件的标准机制,它定义了外设的连接与资源分配,是驱动加载的基础。图形应用开发则可根据需求选择轻量级的Framebuffer方案(如SDL、GTK+直接渲染)或功能完整的X Window方案(如Qt、PyGTK)。这些技术的价值在于能快速构建稳定、高效的交互界面,降低开发

weixin_30216561的博客 462

PyQt5中异步刷新UI+Python中的多线程+python中使用subprocess总结

PyQt5中异步刷新UI和Python中的多线程总结 学习python和PyQt5的过程中,做了demo,可以从电脑端向手push文件和安装apk的GUIdemo,初学者可从这个例子中学到很多知识。涉及到PyQt5中异步刷新UI+Python中的多线程+python中使用subprocess。可结合我的博客学习https://blog.csdn.net/u013247461/article/details/85063455

gtk在回调函数或者线程中更新主界面图像

检查是否有任何事件需要通过调用

m0_60352504的博客 339

GTK+2.0图形界面编程示例

this tutorial supports some instances about gtk+ graphics interface programming.

PyGobject(五十六)布局容器之TreeView(上)

Gtk.TreeViewGtk.TreeView显示数据的能力比较强大。通常与Gtk.ListStore或Gtk.TreeStore连在一起使用。提供很多显示和操纵数据的方法: 当有数据添加,删除或编辑时,界面自动更新 支持拖放 数据排序 支持嵌入部件如复选框,进度条等。 可重排序和可调整大小的列 数据过滤 继承关系Gtk.TreeView是Gtk.Container的直接子类 Methods

Yu的专栏 8100

gtk图形界面强制刷新

gtk_redisplay Table of Contents 1. gtk的动态修改statusbar取值2. gtk和gdk的关系 1 gtk的动态修改statusbar取值 gtk编程的资料比较少,google找了好久都没有结果。在程序修改了statusbar显示字符串后,图形界面不能及时更新,这时需要显示调用gdkwindowprocessallupda

robin_chenyu的专栏 5714

Gtk线程刷新界面

唉,好怀恋Windows啊,那界面处理的的,线程处理的遛遛的,不管你如何风吹雨打……可怜的我,整整一周时间,忙着不停的封装调试,然后线程,同步,线程界面……终于在五一 这样一个伟大的日子前搞定了,向劳动人民致敬……窃以为,做为一个纯情小男人五四青年节应该也有假的,但是dog sun的咋就不放呢……------------------------------------------------...

weixin_30546189的博客 271

pygtk中处理主界面与后台连接的方法

   这几日学着用pygtk做了一个下载歌曲的小工具,但在实际完成过程中产生了一个让我困扰的问题,pygtk并不像java一样可以将实时产生的数据返回给主界面的progressbar widget,于是造成的结果就是,只要开始下载,主界面就变为“未反应”但实际上下载已经开始。在google无数次后终于找到了一个凑合的解决方法 尽管不是很完美,但基本上可以解决问题。现在贴出来,供大家了解

squall1988的专栏 697

21、Python GUI与数据科学实战指南

本文详细介绍了如何在Python中结合GUI开发与数据科学实战应用。内容涵盖使用tkinter进行GUI设计、添加文件选择按钮、图像预览窗格及菜单功能,同时深入讲解了数据科学项目流程,包括数据生成、清理、分析与可视化。通过Jupyter Notebook环境,使用pandas、matplotlib及NumPy等库进行数据操作与图表绘制。此外,还探讨了线程处理、设计原则以及如何拓展项目功能,适合希望掌握Python在GUI开发与数据科学应用的开发者阅读与实践。

sre5engineer的博客 72

PyQt4教程 - 01 简介

PyQt4工具包介绍原作:ZetCode翻译:单手拍掌欢迎转载,转载时请保留完整的版权说明 关于本教程本文是介绍PyQt4的教程。本教程的目的是让您开始使用PyQt4工具包。本教程在Linux上建立和测试。 关于PyQtPyQt是一个创建GUI应用程序的工具包。它是Python编程语言和Qt库的成功融合。Qt库是这个星球上最强大的库之一,在更强大库出现之前。PyQt的官方网站网

单手拍掌的专栏 8613

跨平台GUI开发库

  跨平台GUI开发库这篇内容有点专业,不搞开发的的可以飘过。 作为一个跨平台的GUI库,Qt算是老前辈了(据说tk是第一个真正的跨平台的GUI开发包,不知道有没有人验证过,但是用脚本写界面,这个好像不是主流吧)。网上搜索“跨平台GUI开发”应该可以得到不少对各个开发包进行比较的文章,这里说说我的感受: Qt(http://www.trolltech.com/)我最喜欢的东

Hunnad的专栏 8370

GTK+ 构件刷新问题

GTK响应事件使用的是信号处理函数,信号处理函数不返回主函数,构件就是不刷新。所以在一个信号处理函数里连续改变一个构件的显示,只能看到最后一种情况。把下面的代码放在需要刷新的地方即可while(gtk_events_pending()){              gtk_main_iteration();          }          sleep(1);   

osala的专栏 5493

gtk线程新界面

原文地址:http://my.oschina.net/eatapple/blog/89847 以前一直困扰在gtk中使用多线程新界面的问题,今天终于解决。在写下解决方法,以备后查。     这里以textview中动态显示socket更新数据为例。首先建立socket,然后使用g_idle_add函数添加读取socket函数。在该函数中更新textview中的数据,并且返回一个正值(

yazhouren的专栏 2068

gtk界面加上opengl

gtk画的界面,加上opengl来绘图,直接上代码 #include <glib.h> #include <gtk/gtk.h> #include "GL/glew.h" #include <stdio.h> static GtkWidget *window; FILE *fp; // Shaders 以定义字符串的方式给出 const GLchar...

Luobooooo的博客 2754
上一篇: 详解 repoze.bfg traversal
georgehuzz
博客等级 码龄20年 0粉丝 5原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值