我正在尝试创建一个 GUI,其中有一个全尺寸的浏览器小部件,然后由静态文本小部件覆盖,这些小部件根据外部输入进行更新。无论如何,我可以将静态文本小部件覆盖在浏览器小部件的顶部,或者这不是通常会做的事情?它看起来像这样。
我尝试过在不同的组合中使用 boxsizers 和面板。但每次它们最终都会并排,无论是垂直还是水平。
这是我到目前为止的代码
import wx
import wx.html2
class TrainerVision(wx.Frame):
def __init__(self, *args, **kw):
super().__init__(*args, **kw)
self.Maximize(True)
self.Center()
self.init_ui()
def init_ui(self):
self.create_menu_bar()
self.browser_panel = wx.Panel(self, -1)
self.browser_panel.SetBackgroundColour(wx.GREEN)
browser_sizer = wx.BoxSizer(wx.VERTICAL)
self.browser_panel.SetSizer(browser_sizer)
self.browser = wx.html2.WebView.New(self.browser_panel, -1)
self.browser.LoadURL("http://www.netflix.com")
browser_sizer.Add(self.browser, -1, wx.ALL | wx.EXPAND, 10)
self.test_text = wx.StaticText(self.browser, 0, "test")
self.test_text.SetForegroundColour((255,192,203))
def create_menu_bar(self):
pass
def main():
app = wx.App()
ex = TrainerVision(None)
ex.Show()## Heading ##
app.MainLoop()
if __name__ == '__main__':
main()
您可以使用直接定位,尽管它是否是“通常会做的事情”或是否可取,是有争议的。
import wx
import wx.html2
class TrainerVision(wx.Frame):
def __init__(self, *args, **kw):
super().__init__(*args, **kw)
self.Maximize(True)
self.Center()
self.init_ui()
def init_ui(self):
self.browser_panel = wx.Panel(self, -1)
self.browser_panel.SetBackgroundColour(wx.GREEN)
browser_sizer = wx.BoxSizer(wx.VERTICAL)
self.browser_panel.SetSizer(browser_sizer)
self.browser = wx.html2.WebView.New(self.browser_panel, -1)
self.browser.LoadURL("http://www.netflix.com")
browser_sizer.Add(self.browser, 1, wx.ALL | wx.EXPAND, 10)
# Using fixed positioning bottom right hand corner
w, h = wx.DisplaySize()
bmp = wx.Bitmap('pirate-flag.png')
bw, bh = bmp.GetSize()
w = w - (bw + 50)
h = h - (bh + 100)
self.test = wx.StaticBitmap(self.browser_panel, -1, bitmap=bmp, pos=(w, h))
def main():
app = wx.App()
ex = TrainerVision(None)
ex.Show()## Heading ##
app.MainLoop()
if __name__ == '__main__':
main()
重点是,你可以做到这一点,Netflix 上空飘扬的海盗旗就证明了这一点。 :)