wxPython禁用帧大小调整

10 wxpython resize frame

如何禁用用户调整大小的wxFrame?如果在创建框架时有一个标记,那么它是什么?

Céd*_*ien 17

默认的窗口样式 wx.MINIMIZE_BOX | wx.MAXIMIZE_BOX | wx.RESIZE_BORDER | wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX | wx.CLIP_CHILDREN

如果从中删除wx.RESIZE_BORDER,您将得到一个无法调整大小的帧.

这样的事情应该做的事情:

wx.Frame(parent, style=wx.DEFAULT_FRAME_STYLE ^ wx.RESIZE_BORDER)
Run Code Online (Sandbox Code Playgroud)


use*_*438 6

我使用这个程序尝试了上面的建议:

import wx

app = wx.App()
frame = wx.Frame(None, style=wx.DEFAULT_FRAME_STYLE ^ wx.RESIZE_BORDER)
frame.Show()
app.MainLoop()
Run Code Online (Sandbox Code Playgroud)

......但它没有用。框架仍然可以调整大小。

用这个“wx.DEFAULT_FRAME_STYLE & (~wx.RESIZE_BORDER)”替换样式值也不起作用。框架仍然可以调整大小。

使用 SetMaxSize() 和 SetMinSize() 确实可以防止调整大小,但调整大小箭头仍然出现在 Mac OS X 上。

例子:

import wx

app = wx.App()
frame = wx.Frame(None, size=(400,300))
frame.SetMaxSize(wx.Size(400,300))
frame.SetMinSize(wx.Size(400,300))
frame.Show()
app.MainLoop()
Run Code Online (Sandbox Code Playgroud)

3-20-2019 更新:
https ://wxpython.org/Phoenix/docs/html/wx.Frame.html
根据此页面禁用框架调整大小使用此:

style = wx.DEFAULT_FRAME_STYLE & ~(wx.RESIZE_BORDER | wx.MAXIMIZE_BOX)
Run Code Online (Sandbox Code Playgroud)

使用这个示例程序,我能够使调整大小的箭头在 Mac OS 10.12 上完全消失:

import wx

app = wx.App()
frame = wx.Frame(None, style = wx.DEFAULT_FRAME_STYLE & ~(wx.RESIZE_BORDER | wx.MAXIMIZE_BOX))
frame.Show()
app.MainLoop()
Run Code Online (Sandbox Code Playgroud)