Размеры кадра на изображение в wxpython
-
28-10-2019 - |
Вопрос
Я делаю программу с изображением для фона, и то, что я пытаюсь сделать, это получить кадр, чтобы точно соответствовать изображению.
Легко инициировать кадр с помощью размеров изображения:
wx.Frame.__init__(self, parent, title=title, size=(500, 300))
Но поскольку это также учитывает границы и заголовок окна, это не совсем точно. За исключением вручную регулировки размера пикселя (что в любом случае не будет последовательным перекрестным ОС), что я могу сделать?
РЕДАКТИРОВАТЬ: Я нашел ответ, но, похоже, я не могу самостоятельно проходить в течение нескольких часов. В это время...
Backdrop = wx.Bitmap("image.png")
self.SetClientSize((Backdrop.GetWidth(), Backdrop.GetHeight()))
Решение
Вы можете сделать то же самое с помощью Sizer, что также облегчит ситуацию, если вам когда -нибудь понадобится включить другие элементы наряду с изображением и контролем того, как они масштабируются с кадром.
Вот основной пример кадра, которая изменяется, чтобы соответствовать изображению.
import wx
class Frame(wx.Frame):
def __init__(self, parent, id, title, img_path):
wx.Frame.__init__(self, parent, id, title,
style=wx.DEFAULT_FRAME_STYLE ^ wx.RESIZE_BORDER)
image = wx.StaticBitmap(self, wx.ID_ANY)
image.SetBitmap(wx.Bitmap(img_path))
sizer = wx.BoxSizer()
sizer.Add(image)
self.SetSizerAndFit(sizer)
self.Show(True)
app = wx.App()
frame = Frame(None, wx.ID_ANY, 'Image', '/path/to/file.png')
app.MainLoop()