在wxpython中,如何在播放GIF动画时拖动框架

时间:2016-08-29 05:29:02

标签: animation wxpython draggable gif

我正在使用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()

1 个答案:

答案 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)