Можно ли изменить размер окна wxPython только до определенного соотношения? Я знаю, что вы можете отключить изменение размера; однако мне бы хотелось, чтобы при изменении размера окна оно придерживалось определенного соотношения ширины и высоты.
Изменение размера окна wxPython
Ответы (2)
Одним из очевидных способов сделать это было бы привязать wx.EVT_SIZE
к функции, которая ограничивает соотношение сторон. Я не уверен, что это правильный способ сделать это, но он работает:
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()
(Шаблон взят из здесь.)
person
senderle
schedule
15.05.2011
Я не очень хорошо знаком с wxPython, но не могли бы вы просто сбросить размер окна до вашего максимального/минимального размера, который вы хотите, когда пользователь передаст это? Предпочтительно в случае обнаружения изменения размера?
person
Pwnna
schedule
15.05.2011
Я попробовал это, но прямое изменение размера окна очевидным образом вызвало взрывную рекурсию. Однако установка подсказок по размеру сработала.
- person senderle; 15.05.2011