2016-08-29 5 views
0

나는 이것을 위해 wxpython-Phoenix 3.0.3 버전을 사용하고 있습니다.wxpython에서 GIF 애니메이션을 재생하는 동안 프레임을 어떻게 끌 수 있습니까?

저는 GIF 애니메이션을 재생할 수있는 드래그 가능한 이미지를 만들고 싶습니다. 애니메이션 부분을 주석 처리 할 때 함수가 제대로 작동하지만 애니메이션을 재생할 때 작동하지 않습니다. 어떻게 함께 사용할 수 있습니까?

import wx 
from wx.adv import AnimationCtrl 


class Yukari(wx.Frame): 
    def __init__(self, parent, id, title): 
     wx.Frame.__init__(self, parent, -1, title) 

     self.Bind(wx.EVT_MOTION, self.OnMouse) 
     self.Bind(wx.EVT_CHAR_HOOK, self.closeWindow) 

     self.animation = AnimationCtrl(self) 
     self.animation.LoadFile('Resized_Yuzuki-Yukari.gif') 
     self.animation.Play() 

     self.SetSize((497, 720)) 
     self.SetWindowStyle(wx.SIMPLE_BORDER | wx.STAY_ON_TOP) 
     self.Show() 

    def OnMouse(self, event): 

     if not event.Dragging(): 
      self._dragPos = None 
      pass 
     if not self._dragPos: 
      self._dragPos = event.GetPosition() 
     else: 
      pos = event.GetPosition() 
      displacement = self._dragPos - pos 
      print(displacement) 
      self.SetPosition(self.GetPosition() - displacement) 

    def closeWindow(self, event): 
     key_code = event.GetKeyCode() 
     if key_code == wx.WXK_ESCAPE: 
      self.Destroy() 
     event.Skip() 


app = wx.App() 
frame = Yukari(None, -1, 'Yuzuki Yukari') 
app.MainLoop() 

답변

0

이 리눅스에서 잘 작동은 from wx.animate import AnimationCtrl를 사용, 17, 파이썬 2.7, wx.python ('2.8.12.1 (GTK2 유니 코드)'짝.
는하지만이 경우 작동하지 않습니다 "말하는 애니메이션이 재생되는 경우 "어떤 방식으로 작동하지 않습니까?"드래그 할 수있는 이미지 "라고 말하면 이미지가 프레임 내에서 드래그 가능하거나 프레임이 드래그 가능하다는 것을 의미합니까?
이벤트 동작을 활성화하려면 wx.panel()과 같은 항목에 항목을 넣으십시오. 즉

self.panel1 = wx.Panel(self) 
self.panel1.Bind(wx.EVT_MOTION, self.OnMouse) 
self.panel1.Bind(wx.EVT_CHAR_HOOK, self.closeWindow) 

self.animation = AnimationCtrl(self.panel1) 
+0

첫째, 귀하의 답변에 감사드립니다. 불행히도 Phoenix 버전에서는 "wx.animate import AnimationCtrl"이 작동하지 않습니다. 그리고 드래그 가능한 이미지의 의미는 프레임 자체를 드래그 할 수 없다는 것입니다. 예, 조언 대신 프레임을 사용하여 패널을 사용해 보겠습니다! –