При попытке перетащить кнопку появляется ошибка -> wx._core.wxAssertionError: - PullRequest
0 голосов
/ 10 мая 2019

Я пытаюсь сделать кнопку перетаскивания.Я сделал класс, чтобы сделать перетаскивание.когда я запускаю код, он запускается;но когда я пытаюсь нажать на кнопку или перетащить ее, я получаю эту ошибку

Ошибка:

wx._core.wxAssertionError: Сбой утверждения C ++ "tlw" в / Users/robind/projects/buildbots/macosx-vm6/dist-osx-py37/Phoenix/ext/wxWidgets/src/osx/window_osx.cpp(762) в DoScreenToClient (): окно TopLevel отсутствует

Вот код ниже:

class window (wx.Frame):
    def __init__ (self, parent, id):
        wx.Frame.__init__ (self, parent, id, "Solitaire", size = (1300, 800))
        self.add_menubar()
        self.panel = wx.Panel(self)
        img = 'background.jpg'
        self.bmp = wx.Image(img, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
        self.bitmap = wx.StaticBitmap(self.panel, -1, self.bmp)


        c2I = wx.Image('C2.png', wx.BITMAP_TYPE_ANY).Rescale(150, 200).ConvertToBitmap()
        self.c2 = wx.BitmapButton(self.bitmap, -1, c2I, pos = ((100, 100)))
        mvc2 = move(self.c2)
        self.Bind(wx.EVT_LEFT_DOWN, mvc2.onDown)
        self.c2.Bind(wx.EVT_LEFT_DOWN, mvc2.onButton)
        self.c2.Bind(wx.EVT_MOTION, mvc2.drag)
        self.c2.Bind(wx.EVT_LEFT_UP, mvc2.onRelease)




class move(wx.BitmapButton):
    def __init__ (self, object):
        wx.BitmapButton.__init__(self)
        self.object = object

        self.delta = ((0, 0))
    def drag(self, event):
        if event.Dragging():
            x, y = self.ScreenToClient(self.object.ClientToScreen(event.GetPosition()))
            fp = (x - self.delta[0], y - self.delta[1])
            self.object.Move(fp)

    def onRelease(self, event):
        if self.object.HasCapture():
            self.object.ReleaseMouse()

    def onDown(self, event):
        print("on frame")
        event.Skip()

    def onButton(self, event):
        self.object.CaptureMouse()
        x, y = self.ScreenToClient(self.object.ClientToScreen(event.GetPosition()))
        originx, originy = self.object.GetPosition()
        dx = x - originx
        dy = y - originy
        self.delta = ((dx, dy))

По сути, я хочу перетащить кнопку на экран.пожалуйста помоги.Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...