如何在wxpython中叠加2个小部件

问题描述 投票:0回答:1

我正在尝试创建一个 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()
wxpython
1个回答
0
投票

您可以使用直接定位,尽管它是否是“通常会做的事情”或是否可取,是有争议的。

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 上空飘扬的海盗旗就证明了这一点。 :)

© www.soinside.com 2019 - 2024. All rights reserved.