lhk*_*lhk 4 python gtk visualization pygtk pycairo
我正在创建一个用于数据可视化的小工具.GUI是使用Pygtk创建的,非常简单.在用户输入文件名后,他可以按"calc"按钮查看输出.输出由pycairo呈现并呈现在gtk.DrawingArea中.
该应用程序的工作原理如下:按下该按钮时,将处理该文件,并将其内容存储在特殊类中.这个类是一个自定义容器:它与gui一起实例化,无论是空的还是填充的.DrawingArea的expose事件链接到一个绘图函数,该函数读取容器并绘制其内容.只要容器为空,DrawingArea就会为空,但在点击calc并加载文件之后,应该用我的视觉效果填充DrawingArea.
问题是:除了更新DrawingArea之外,一切正常.我无法弄清楚如何手动调用曝光.按下calc后我必须调整窗口大小才能看到结果.
更具体一点:我从教程中复制了这段代码,不知道如何自己提供参数事件:
def do_expose_event(self,event):
# Create the cairo context
cr = self.window.cairo_create()
# Restrict Cairo to the exposed area; avoid extra work
cr.rectangle(event.area.x, event.area.y,
event.area.width, event.area.height)
cr.clip()
self.draw(cr, *self.window.get_size())
Run Code Online (Sandbox Code Playgroud)
Kai*_*Kai 12
为了让你的小部件刷新,你需要告诉GTK +需要重新绘制它,通常使用gtk.Widget.queue_draw()(称为self.queue_draw()),这会使整个小部件无效并安排重绘(通过发出公开事件),这将在程序返回后发生到主循环.
如果您需要更多地控制正在重绘的区域,您可以始终使用gtk.Widget.queue_draw_area()指定要使其无效的区域,或者一直向下移动gtk.gdk.Window.invalidate_rect().
| 归档时间: |
|
| 查看次数: |
5390 次 |
| 最近记录: |