这段代码:
import wx
app = wx.App()
frame = wx.Frame(None, style = wx.DEFAULT_FRAME_STYLE & ~wx.CAPTION)
frame.Maximize()
frame.Show()
app.MainLoop()
生成一个覆盖整个屏幕的框架,包括我的任务栏。有没有办法让它只占用任务栏不占用的屏幕?
操作系统:Windows XP
蟒蛇:2.7.3
- WxPython:2.9.3.1
据我所知,我会说不,你不能用 Maximize 方法来做到这一点。您可以通过获取屏幕尺寸并将框架的抓取设置为减去任务栏空间来伪造它。您可能必须找到一种方法来获取任务栏的位置,因为有些人不会将其留在底部。
获取没有任务栏的工作区位置和大小:
c_x, c_y, c_w, c_h = wx.ClientDisplayRect()
设置位置和大小:
frame = wx.Frame(None, pos=(c_x, c_y), size=(c_w, c_h),
style=wx.DEFAULT_FRAME_STYLE & ~wx.CAPTION & ~wx.RESIZE_BORDER)
我想在这里放置一个后续解决方案,因为上述问题似乎仍然有效,并且问题也出现在 C++ 中。
一个可能且相当通用的解决方案是在最大化之前应用默认框架样式,然后恢复为您的自定义(无标题)样式。
成功测试的 C++ 版本内容如下:
frame->SetWindowStyle(wxDEFAULT_FRAME_STYLE);
frame->Maximize(true);
frame->SetWindowStyle(wxRESIZE_BORDER);
在 Windows 10 下,这会导致标题栏短暂闪烁,但效果似乎很小。
对于未来的人来说。尝试使用 ShowFullScreen(True)
我是 wx 的新手,但尝试使用 self.ShowFullScreen(True) 或 frame.ShowFullScreen(True)