2013-04-08 18 views
7

Görselleştirilmesi gereken python'da bir simülasyon yapıyorum. Python'un sahip olduğu en basit grafik kütüphanesini arıyorum.basit grafikler

setWindow(10,10) 
setCube(0,0,1,1,1)#windowX, windowY, width, length, hight, 
updateList = simUpdate 
for update in updateList: 
    removeShape(0,0) 
    setCube(0,0,1,1,1) 

Bu hatlar boyunca bir şey yapmama izin veren herhangi bir şey var mı? 3d bir zorunluluk değil ama güzel olurdu. Python 3,3'te çalışıyorum ve anlayabildiğim kadarıyla bir macun için pygames güncellenmedi. Ben daha titiz çalışıyordum ama biraz daha kolay bir şey isterim.

+0

Eğer 'pygame' demek, [3.x ile çalışır] (http://www.pygame.org/wiki/FrequentlyAskedQuestions#Does%20Pygame%20work%20with%20Python%203?), Ve çalışır Mac'te.(İkili bir yükleyici ile birlikte gelmiyor, ama aslında, ikili yükleyicileri istemediğini sanmıyorum. IIRC, 64-bit Python ya da Apple'ın Python'u, hatta en yeni python.org 32-bit Python.) – abarnert

+0

Bildiğim kadarıyla, 3D grafikler için diğer yaygın alternatifler ['PyOpenGL'] (http://pyopengl.sourceforge.net) ve [' pyglet'] (http://www.pyglet.org). Biraz sınırlı ve modası geçmiş deneyimlerime dayanarak, eskiden, GL açısından düşünmeyi seviyorsanız, muhtemelen daha iyi olacaktır; Pencereler ve widget'lar açısından düşünmek ve sadece 3D yüzeyleri onlara vermek istiyorsanız. – abarnert

+0

PyOpenGL'i duydum, almanın ne kadar kolay olduğunu, yine leğenlerle oynamak gibi mümkün olduğunca basit bir şey arıyorum. – EasilyBaffled

cevap

8

Basit grafikler için graphics.py'u kullanabilirsiniz.

Python'a dahil edilmediğinden, Python'un görebileceği bir Python dosyası olarak (tercihen graphics.py olarak adlandırılır) kaydetmelisiniz --- sys.path.

Öğrenmek çok kolay ve zaten yerleşik çeşitli şekiller var. Yerli 3D grafikler yoktur (hiçbiri orada değildir) ancak bunu yapmak çok kolaydır: bir küp için bir kareyi ve diğerini bir kenara çizin ve bir karenin bir köşesini diğer karedeki karşılık gelen köşeye bağlayın.

bir kare oluşturmak için graphics.py kullanarak Örnek:

from graphics import * 
win = GraphWin(width = 200, height = 200) # create a window 
win.setCoords(0, 0, 10, 10) # set the coordinates of the window; bottom left is (0, 0) and top right is (10, 10) 
mySquare = Rectangle(Point(1, 1), Point(9, 9)) # create a rectangle from (1, 1) to (9, 9) 
mySquare.draw(win) # draw it to the window 
win.getMouse() # pause before closing 
+2

Sadece pipetlenebilir mi? – EasilyBaffled

5

pygamework with 3.x yapar ve Mac OS X ile herhangi yeni Mac sürümü için herhangi bir ikili montajcılar vardır, ama bu bir kayıp sayılmaz, çünkü ikili montajcılar asla çok iyi değildi. Temel olarak Unix kurulum yönergelerini takip etmeniz ve tüm önkoşulları nasıl kuracağınıza kendiniz karar vermeniz gerekir (eğer Homebrew sadece brew install sdl sdl_ttf … jpeg libpng kullanırsanız), daha sonra kurulumun tüm bu önkoşulları nasıl bulacağına nasıl karar vereceğini anlayın. Kendi Python kurulumunuza uyarlanmış (veya belki de kullanabilirsiniz) this recipe'a bakmak isteyebilirsiniz.

Bildiğim kadarıyla, 3D grafikler için diğer büyük alternatifler PyOpenGL ve pyglet'dur. Birincisi, GL terimlerinde düşünürseniz harika olan OpenGL etrafında oldukça doğrudan bir sarıcıdır. İkincisi, pygame'a benzer, ancak SDL yerine, her platformda yerel OpenGL ve yerel pencerelere doğrudan yerleşik olan daha üst düzey bir kütüphanedir.

Ayrıca PyOpenGL ana yazarı tarafından sürdürülen Python 3D Software Collection, bakmak isteyebilirsiniz. Ne kadar güncel olduğuna dair bir fikrim yok, ancak hala PyOpenGL sitesinden ve dokümanlardan bağlantı kuruyor.

Matematiksel olarak yönlendirilmiş bir şey arıyorsanız, matplotlib, mplot3d ve arkadaşlarına bakmak isteyebilirsiniz. Sonunda karmaşık geometrik şekilleri çizmeye çalışıyorsanız ve/inters/trans dönüştürün. Onları arkadaşın. Basit bir oyun ya da yarı-CAD programı oluşturmaya çalışıyorsanız, öyle değil. OpenGL hacker olmayan kişiler için tasarlanan www.vpython.org

den

3

Görsel Python,. Anında değil, bazılarının kontrollerde yerleşik olarak tutulan bir sahne grafiği modeline sahiptir ve Internet'te dolaşan oldukça fazla sayıda bilimsel/mühendislik simülasyon örneği vardır.