此代码:
import wx
app = wx.App()
frame = wx.Frame(None, style = wx.DEFAULT_FRAME_STYLE & ~wx.CAPTION)
frame.Maximize()
frame.Show()
app.MainLoop()
制作一个覆盖整个屏幕的框架,包括我的任务栏。有没有办法让它只占用任务栏未拍摄的画面?
操作系统:Windows XP
Python:2.7.3
答案 0 :(得分:2)
从我所看到的,我会说不,你不能用Maximize方法做到这一点。您可以通过获取屏幕大小并将框架的抓取设置为减去任务栏的空间来伪造它。您可能必须找到一种方法来获取任务栏的位置,因为有些人不会将其置于底部。
答案 1 :(得分:1)
在没有任务栏的情况下获取工作区位置和大小:
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)
答案 2 :(得分:0)
为未来的人们寻找。尝试使用ShowFullScreen(True)
我是wx的新手,但尝试使用self.ShowFullScreen(True)或frame.ShowFullScreen(True)
答案 3 :(得分:0)
我想在此放置一个后续解决方案,因为上述问题仍然有效,并且C ++中也出现了问题。
一个可能且比较通用的解决方案是在最大化之前应用默认框架样式,然后再恢复为自定义(无标题)样式
已成功测试的C ++版本显示为:
frame->SetWindowStyle(wxDEFAULT_FRAME_STYLE);
frame->Maximize(true);
frame->SetWindowStyle(wxRESIZE_BORDER);
在Windows 10中,这会导致标题栏短暂闪烁,但效果似乎不明显。