wxpython:添加背景图片和按钮

wxpython:添加背景图片和按钮,python,wxpython,Python,Wxpython,我对wxPython相当陌生,正在尝试在背景图像上放置一些按钮。我在wxPython中找不到一个容器,该容器可以包含一个图像以及一些按钮。因此,我使用以下代码: import wx ######################################################################## class MainPanel(wx.Panel): """""" #-----------------------------------------

我对
wxPython
相当陌生,正在尝试在背景图像上放置一些按钮。我在
wxPython
中找不到一个容器,该容器可以包含一个图像以及一些按钮。因此,我使用以下代码:

import wx

########################################################################
class MainPanel(wx.Panel):
    """"""

    #----------------------------------------------------------------------
    def __init__(self, parent):
        """Constructor"""
        wx.Panel.__init__(self, parent=parent)
        self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM)
        self.frame = parent

        sizer = wx.BoxSizer(wx.VERTICAL)
        hSizer = wx.BoxSizer(wx.HORIZONTAL)

        button1 = wx.Button(self, label='Button1', pos=(100, 100), size=(175, 28))
        sizer.Add(button1, 0, wx.ALL, 5)
        hSizer.Add((1,1), 1, wx.EXPAND)
        hSizer.Add(sizer, 0, wx.TOP, 100)
        hSizer.Add((1,1), 0, wx.ALL, 75)
        self.SetSizer(hSizer)
        self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBackground)

    #----------------------------------------------------------------------
    def OnEraseBackground(self, evt):
        """
        Add a picture to the background
        """
        # yanked from ColourDB.py
        dc = evt.GetDC()

        if not dc:
            dc = wx.ClientDC(self)
            rect = self.GetUpdateRegion().GetBox()
            dc.SetClippingRect(rect)
        dc.Clear()
        bmp = wx.Bitmap("admin.png")
        dc.DrawBitmap(bmp, 0, 0)


########################################################################
class MainFrame(wx.Frame):
    """"""

    #----------------------------------------------------------------------
    def __init__(self):
        """Constructor"""
        wx.Frame.__init__(self, None, size=(320, 243))
        panel = MainPanel(self)        
        self.Center()

########################################################################
class Main(wx.App):
    """"""

    #----------------------------------------------------------------------
    def __init__(self, redirect=False, filename=None):
        """Constructor"""
        wx.App.__init__(self, redirect, filename)
        dlg = MainFrame()
        dlg.Show()

#----------------------------------------------------------------------
if __name__ == "__main__":
    app = Main()
    app.MainLoop()
但是,
button1
的问题没有得到正确的放置-无论我设置的是什么
pos=(100100),size=(175,28)
value-它被放置在相同的位置(?)

另外,我不想要最大化、最小化和还原按钮选项—可能只有一个关闭窗口的按钮—如何从框架/应用程序窗口中删除默认的最大化、最小化和还原按钮

=======更新=======


下面是创建GUI界面所需的带有文本和按钮的精确图像-我尝试了很多创建类似的按钮或类似的图形,但我无法-我已经发布了代码-请告诉我如何实现这一点?

我写了一篇关于在面板上放置背景图像的文章,这也适用于您的用例。你可以在这里阅读:

要删除标题栏中的各种按钮,需要弄乱框架的样式标志。另一个线程讨论了一点:

该示例显示了以下代码:

frame = wx.Frame( None, title="Hello wxPython", style = wx.CLOSE_BOX | wx.CAPTION | wx.RESIZE_BORDER )

这应该会让你非常接近你想要的。

我已经附上了创建GUI界面所需的带有文本和按钮的确切图像-我尝试了很多创建类似的按钮或类似的图形,但我无法-我已经发布了代码-请让我知道如何实现这一点?你会使用我提到的代码吗在第一个教程中,将图像应用于面板的背景。要创建这样的按钮,您可能需要查看GradiantButton或ShapedButton小部件。您可以使用x/y坐标绝对定位它们,也可以使用带有间隔的尺寸标注器。