我正在使用wxpython-Phoenix 3.0.3版本。
我想制作一个可以播放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 :(得分:0)
这适用于Linux mate 17,python 2.7,wx.python(' 2.8.12.1(gtk2-unicode)',使用from wx.animate import AnimationCtrl
。
当你说"但是当它播放动画时它不起作用#34;它会以什么方式起作用,当你说'#34; draggable image"你的意思是图像是"可拖动"在框架内或框架是否可拖动?
另外我相信您需要将项目放在像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)