我有一个只有一个 child 的 wx.Frame。在设置 child 的 wx.Sizer 时,我可以使用 wx.SHAPED 标志,它保持 child 的宽高比锁定。但是,Frame 在纵横比方面仍然具有完全的自由度,并且会在 child 未使用的区域留出空白。
如何在调整大小时锁定 wx.Frame 的纵横比?
最佳答案
Sizers 不能应用于顶级窗口(为了定义窗口本身的属性而不是它们的内容),所以不幸的是没有“真正”的方法来锁定纵横比。最好的办法是捕获窗口的 OnSize
事件,获取用户希望窗口的大小(存储在 wxSizeEvent
中),计算新的宽度和高度,然后立即用新的尺寸调用 SetSize
。
此技术在调整大小时存在视觉伪影的缺点(操作系统最初会根据用户拖动窗口的方式绘制窗口,但在您调用 SetSize
后立即重新绘制,从而导致闪烁效果)所以这不是一个很好的解决方案,但是由于您无法将顶级窗口锁定为纵横比(并且根本不需要使用 SetSize
调整大小),您必须决定是否闪烁是值得的。
关于wxpython - wx小部件/wxPython : Resizing a wxFrame while keeping aspect ratio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1291991/