Есть ли способ скрыть кнопку, но сделать ее кликабельной? - PullRequest
0 голосов
/ 14 февраля 2020

Я создаю программное обеспечение с wxpython, и я создаю lo go с веб-сайтом, который помогает создавать логотипы, и я хочу создать невидимую кнопку позади этого lo go, что когда lo go нажал, я выполню что-то, так есть ли способ сделать кнопку невидимой, но кликабельной?

Это изображение

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

1 Ответ

0 голосов
/ 17 февраля 2020

Это один простой способ добиться того, чего вы хотите, привязав события мыши к изображению.
Убедитесь, что изображение по существу имеет фиксированный размер, или вам придется начинать вычисление позиций.

import wx

class Example(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, -1, 'Mouse Control')
        self.panel1 = wx.Panel(self)
        self.panel2 = wx.Panel(self)
        self.panel3 = wx.Panel(self)
        self.aBitmap = wx.Image(name = "image_button.png").ConvertToBitmap()
        self.bm = wx.StaticBitmap(self.panel2, -1, self.aBitmap)
        self.bm.Bind(wx.EVT_LEFT_DOWN, self.onClick)
        self.bm.Bind(wx.EVT_MOTION, self.onAccess)
        vbox = wx.BoxSizer(wx.VERTICAL)
        vbox.Add(self.panel1,0)
        vbox.Add(self.panel2,0)
        vbox.Add(self.panel3,0)
        self.panel1.SetMinSize(self.bm.GetSize())
        self.panel2.SetMinSize(self.bm.GetSize())
        self.panel3.SetMinSize(self.bm.GetSize())
        self.panel1.SetBackgroundColour("blue")
        self.panel3.SetBackgroundColour("blue")
        self.SetSizerAndFit(vbox)
        self.Show()

    def onClick(self, event):
        x,y = event.GetPosition()
        if y > 25 and y < 50:
            if x > 30 and x < 170:
                wx.MessageBox("Contact", "Contact Header")
            elif x > 800 and x < 860:
                wx.MessageBox("Exit", "Exit Header")
        else:
            event.Skip()

    def onAccess(self, event):
        x,y = event.GetPosition()
        if y > 25 and y < 50:
            if x > 30 and x < 170:
                self.SetCursor(wx.Cursor(wx.CURSOR_HAND))
            elif x > 800 and x < 860:
                self.SetCursor(wx.Cursor(wx.CURSOR_HAND))
            else:
                self.SetCursor(wx.Cursor(wx.CURSOR_DEFAULT))
        else:
            self.SetCursor(wx.Cursor(wx.CURSOR_DEFAULT))
        event.Skip()

if __name__ == '__main__':
    app = wx.App()
    Example()
    app.MainLoop()

Этот код указывает, что вы превысили hotspot (свяжитесь с нами, выйдите), изменив курсор.

enter image description hereenter image description here

...