2015-06-13 3 views
0

У меня есть программа, которая отображает карточный костюм как наложенные изображения, и я хочу выбрать карту, дважды щелкнув по ней. К сожалению, как я его запрограммировал, программа поднимает изображение, которое было перекрыто, а не верхнее изображение (например, если я нажимаю на KS, система печатает «AS» и т. Д. JS возвращает QS для области перекрытие, но JS справа от него)wxPython overlapping images

Карточки .png изображения 72x96 пикселей.

CardImages

Может кто-нибудь предложить, пожалуйста, как я могу настроить его, чтобы ответить на отображаемой карты?

Вот отдельные изображения карты

KingAce of spadesQueenJack

import wx 

class Example(wx.Frame): 

    def __init__(self, parent, title): 
    super(Example, self).__init__(parent, title=title, 
     size=(250, 200)) 

    self.Center() 
    self.Show() 
    pnl = wx.Panel(self) 

    mainSizer= self.BuildSuit(pnl) 
    pnl.SetSizer(mainSizer) 
    pnl.Layout() 
    pnl.Fit() 

    def BuildSuit(self, pnl): 
    cards=['AS', 'KS', 'QS', 'JS'] 
    suitSizer=wx.GridBagSizer(1, 13) 
    border = 10 
    for ii in range(0, len(cards)): 
     card=cards[ii] 
     image = wx.Bitmap('Images/CardImages/'+card+'.png',wx.BITMAP_TYPE_PNG) 
     img = wx.StaticBitmap(pnl, -1, image, name=card) 
     img.Bind(wx.EVT_LEFT_DCLICK, self.onSuitClick) 
     suitSizer.Add(img, pos=(0,ii), flag=wx.LEFT, border=border) 
     border = -50 
    return suitSizer  

    def onSuitClick(self, event): 
    imgCtrl=event.GetEventObject() 
    print imgCtrl.GetName() 

if __name__ == '__main__': 

    app = wx.App() 
    Example(None, title='Double click images') 
    app.MainLoop() 

ответ

0

решаемые с помощью метода GetSubImage() на изображении

Спасибо, если вы смотрели :)

def BuildSuit(self, pnl): 
    cards=['AS', 'KS', 'QS', 'JS'] 
    suitSizer=wx.GridBagSizer(1, 13) 
    border = 0 
    for ii in range(0, len(cards)): 
    card=cards[ii] 
    image = wx.Bitmap('Images/CardImages/'+card+'.png',wx.BITMAP_TYPE_PNG).ConvertToImage() 
    image=image.GetSubImage(wx.Rect(0, 0, 26, 96)) 
    img = wx.StaticBitmap(pnl, -1, image.ConvertToBitmap(), name=card) 
    img.Bind(wx.EVT_LEFT_DCLICK, self.onSuitClick) 
    suitSizer.Add(img, pos=(0,ii), flag=wx.LEFT, border=border) 
    border = -13 
    return suitSizer