2012-08-29 26 views
1

我想使用pycairopython3來顯示一些簡單的遊戲/交互式矢量圖。使用python3中的cairo作爲矢量動畫的示例

我想我還需要一個「小工具工具包」來管理創建窗口本身,因爲我不認爲pycairo可以單獨完成這一部分(它只會將輸出保存到文件中)。

我看着PySide(基於Qt,似乎很複雜)和gi(基於gtk3我猜測,甚至還有gi-cairo但無法找到一個教程或示例)。我真的不知道如何將這些與pycairo整合。

我聽說pygame,但似乎不支持python3(至少我沒有python3-pygame出現在apt中)。

我可以使用pycairopython3和一些標準的窗口工具包來創建一個窗口並繪製一些簡單的動畫嗎?

編輯:獎勵點,如果示例是動畫。

+0

pygame支持python3 – sloth

+0

使用Qt:它有自己的繪畫工具(包括SVG),比開羅更好,更快(是的,我已經嘗試過了)。我認爲這些API非常相似:路徑的概念保持不變。如果你有興趣,@reply在這裏,我會給更多的細節。我也會舉一個例子,但問題是關於開羅... –

+0

我是,你想我添加Qt的關鍵字?請繼續並將其作爲答案發布。 –

回答

1

這是PySide顯示在屏幕上(可能動態)SVG文件中的完整應用程序:

import sys 
from PySide import QtCore, QtGui, QtSvg 

app = QtGui.QApplication(sys.argv) 

widget = QtSvg.QSvgWidget('animation.svg') 
widget.show() 

app.exec_() 

這裏是一個使用圖形視圖框架動畫一個奇怪的矢量形狀又如:

import sys 
from PySide.QtCore import * 
from PySide.QtGui import * 

app = QApplication(sys.argv) 

path = QPainterPath() 
path.quadTo(0,20, 20,20) 
path.lineTo(10,10) 

item = QGraphicsPathItem(path) 

timer = QTimeLine(5000) 
timer.setFrameRange(0, 100) 

ani = QGraphicsItemAnimation() 
ani.setItem(item) 
ani.setTimeLine(timer) 

ani.setPosAt(1, QPointF(200,200)) 
ani.setRotationAt(1, 360) 
ani.setScaleAt(1, 3,3) 

scene = QGraphicsScene(0,0, 300,300) 
scene.addItem(item) 

view = QGraphicsView(scene) 
view.setRenderHints(QPainter.Antialiasing) 
view.show() 

timer.start() 

app.exec_() 
+0

這是Qt的一個很好的例子,它不是很好,如果(像我一樣)在這裏尋找cairo的例子和Gtk雖然。 - 不確定,如果可能的話,但問題可以改爲使用Qt進行矢量動畫的例子嗎? –