开发者

Resizing a wxPython Window

开发者 https://www.devze.com 2023-03-05 19:00 出处:网络
Is it possi开发者_开发百科ble to make a wxPython window only re-sizable to a certain ratio? I know you can disable resizing; however, I\'d like it so when the window was resized it stuck to a certain

Is it possi开发者_开发百科ble to make a wxPython window only re-sizable to a certain ratio? I know you can disable resizing; however, I'd like it so when the window was resized it stuck to a certain width to height ratio.


One obvious way to do this would be to bind wx.EVT_SIZE to a function that constrains the aspect ratio. I'm not certain this is The Right Way to do this, but it works:

import wx

class SizeEvent(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title)

        self.Bind(wx.EVT_SIZE, self.OnSize)
        self.Centre()
        self.SetSizeWH(400, 300)
        self.Show(True)

    def OnSize(self, event):
        hsize = event.GetSize()[0] * 0.75
        self.SetSizeHints(minW=-1, minH=hsize, maxH=hsize)
        self.SetTitle(str(event.GetSize()))

app = wx.App()
SizeEvent(None, 1, 'sizeevent.py')
app.MainLoop()

(The boilerplate is borrowed from here.)


I'm not too familiar with wxPython, but can't you just reset the window size to your max/min size that you want once the user pass that? Preferably in the event that detects resizing?

0

精彩评论

暂无评论...
验证码 换一张
取 消