10-07-2011 12:22 tarihinde, Ömer Fadıl USTA yazdı:
Tam olarak yapmak
istediğiniz ekrana bir
jpg/png resmi koyup bunu büyütüp küçültmek yerini oynatmak iste pygame
ile halledebilirsiniz
Ps: yazdığım o kodları arşiv hdd lerimden bulursam isterseniz size
yollayabilirim
Merhabalar,
Az önce Pardus-kullanıcılar listesine gönderdiğim mesajı size de
göndereyim...
*****
Merhabalar,
Linux-programlama listesinde ben de böyle bir talepte bulunmuştum.
Kurcalayınca wxpython'un OGL kütüphanesine ulaştım. Hala araştırıyorum.
http://wiki.wxpython.org/wxOGL
http://pyopengl.sourceforge.net/index.html
Benim tam olarak istediğim, ekran üzerinde aşağıdaki bağlantıda
görüldüğü gibi birbirine bağlı kare (içinde resim olan) ve birbiri ile
ilişkili oklar yaratmak. Zaten aşağıdaki bağlantı da da bir kişi aynı
istekte bulunmuş ve sonra OGL'ye ulaşmış.
http://www.daniweb.com/software-development/python/threads/186203
http://www.daniweb.com/forums/attachment.php?attachmentid=9755&d=1239454436
Her şeye rağmen aynı sorundan bahsediyorsak ve bir sonuca
ulaşabilirseniz bilgimiz olursa çok hoş olur...
*****
Yazmak istediğim programın amacı ise şöyle: Bir test düzeneği olacak ve
bu test düzeneğinde iki ayrı motor olacak. Teker'in dönme devrine göre
sistemde bulunan dişli kombinasyonları hesaplanacak ve bu iki motorun
dönüş devri hesaplamaya göre ayarlanacak. Ben işin elektronik kontrolünü
başkasına bırakacağım ama ekran üzerine bir tekerlek ve bu tekerlekten
hareket alan ve sürekli değişebilecek olan dişli kombinasyonlarına göre
devir hesabı yapacağım. Yani Organizasyon şemesında ya da yukarıdaki
FreeMind programında olduğu gibi ekrana dişli resimleri ve o dişlilerin
birbirleri ile olan ilişkilerini (eksenel bağlantı mı yoksa çevresel
bağlantı mı?) belirtip buna göre son dişlinin tur sayısını öğrenmek...
Ekte tam olarak istediğimi anlatan ve OGL sitesinde bulduğum uygulama
var. Aynen burada olduğu gibi iki nesneyi birbirine yandan ya da üstten
bağlayabilecek çizgiler de ekleyebilsem diğer kısımlarını yapması kolay :)
--
Kolay gelsin,
Mucip:)
import wx
import wx.lib.ogl as ogl
CLICK_TO_DRAG = True
class MyEvtHandler(ogl.ShapeEvtHandler):
"""
Overwrite the default event handler to implement some custom features.
"""
def __init__(self):
ogl.ShapeEvtHandler.__init__(self)
def OnLeftClick(self, x, y, keys = 0, attachment = 0):
"""
The dragging is done here.
"""
shape = self.GetShape()
print shape.__class__, shape.GetClassName(), shape.a
canvas = shape.GetCanvas()
dc = wx.ClientDC(canvas)
canvas.PrepareDC(dc)
if shape.Selected():
shape.Select(False, dc)
canvas.Redraw(dc)
else:
redraw = False
shapeList = canvas.GetDiagram().GetShapeList()
toUnselect = []
for s in shapeList:
if s.Selected():
toUnselect.append(s)
shape.Select(True, dc)
if toUnselect:
for s in toUnselect:
s.Select(False, dc)
canvas.Redraw(dc)
class OGLCanvas(ogl.ShapeCanvas):
def __init__(self, parent, frame):
ogl.ShapeCanvas.__init__(self, parent)
self.SetBackgroundColour("LIGHT BLUE")
self.diagram = ogl.Diagram()
self.SetDiagram(self.diagram)
self.diagram.SetCanvas(self)
self.circle = ogl.CircleShape(100)
self.circle.SetCanvas(self)
self.circle.a="Circle identified"
self.diagram.AddShape(self.circle)
self.circle.Show(True)
if CLICK_TO_DRAG:
self.evthandler = MyEvtHandler()
self.evthandler.SetShape(self.circle)
self.evthandler.SetPreviousHandler(self.circle.GetEventHandler())
self.circle.SetEventHandler(self.evthandler)
else:
self.Bind(wx.EVT_MOTION, self.OnMotion, self)
def OnMotion(self, event):
shape = self.circle
bx = shape.GetX()
by = shape.GetY()
bw, bh = shape.GetBoundingBoxMax()
oldrect = wx.Rect(int(bx-bw/2)-1, int(by-bh/2)-1, int(bw)+2, int(bh)+2)
canvas = shape.GetCanvas()
dc = wx.ClientDC(canvas)
canvas.PrepareDC(dc)
shape.Move(dc, event.GetPosition()[0], event.GetPosition()[1])
canvas.Refresh(False, oldrect)
event.Skip()
class OGLFrame(wx.Frame):
def __init__(self, *args, **kwds):
wx.Frame.__init__(self, *args, **kwds)
self.SetTitle("OGL TEST")
self.SetBackgroundColour(wx.Colour(8, 197, 248))
self.canvas = OGLCanvas(self, self)
if __name__ == "__main__":
app = wx.PySimpleApp(False)
wx.InitAllImageHandlers()
ogl.OGLInitialize()
frame = OGLFrame(None, -1, "")
app.SetTopWindow(frame)
frame.Show(True)
app.MainLoop()
_______________________________________________
Linux-programlama mailing list
[email protected]
https://liste.linux.org.tr/mailman/listinfo/linux-programlama
Liste kurallari: http://liste.linux.org.tr/kurallar.php