создание графического интерфейса с помощью wxpython - PullRequest
0 голосов
/ 15 сентября 2011

Я добавил изображение на панель в моем графическом интерфейсе. Я хочу, чтобы это изображение было вписано в панель, где я хочу, чтобы его длина была такой же, как и длина панели.

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

 class myMenu(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title, size=(900, 700))
        panel = wx.Panel(self, -1)
        panel.SetBackgroundColour('#4f3856')
        img = 'C:\Users\DELL\Desktop\Implementation\img1.jpg'
        bmp = wx.Bitmap(img)
        btmap = wx.StaticBitmap(panel, wx.ID_ANY, bmp, (0, 0))  

1 Ответ

1 голос
/ 15 сентября 2011

Если вы хотите масштабировать изображение, вы, вероятно, захотите открыть его как wx.Image, а не как wx.Bitmap.Затем вы можете масштабировать его, используя scale(self, width, height, quality) метод wx.Image http://www.wxpython.org/docs/api/wx.Image-class.html#Scale

Реальная проблема заключается в том, что вы хотите, чтобы размер изображения изменялся каждый раз, когда окно делает это.Это означает, что вам нужно привязать событие wx.EVT_SIZE к какому-либо методу в вашем классе (скажем, onSize).Затем каждый раз, когда вызывается onSize, вам необходимо:

  1. Найти текущий размер окна,
  2. Масштабировать wx. Изображение до этого размера,
  3. Конвертироватьэто к wx.Bitmap, используя wx.BitmapFromImage,
  4. Вызовите SetBitmap на вашем wx.StaticBitmap, передавая новое растровое изображение.

См. http://zetcode.com/wxpython/events/ для базового введения в обработку событий в wxPython, включая пример с wx.EVT_SIZE.

...