wxPython:自由风格图形

时间:2013-11-07 06:20:02

标签: python wxpython

我对Linux OS上的wxPython相当新。我一直在尝试创建一个GUI屏幕,如下所示。

但似乎wxPython很难这样做,因为我遇到下面列出的问题:

  1. 不能将按钮放在具有相同外观的图像上 - “选择操作类型”,“统计”和“返回”?

  2. 能够根据需要设置按钮颜色吗?此外,按钮需要在边缘处弯曲

  3. 要包装的按钮文字的标签?

  4. 代码:

    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)
    
            for num in range(2):
                label = "Choose To Change Address" # Sample Button 
                btn = wx.Button(self, label=label)
                sizer.Add(btn, 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("sample.png")
            dc.DrawBitmap(bmp, 0, 0)
    
    
    ########################################################################
    class MainFrame(wx.Frame):
        """"""
    
        #----------------------------------------------------------------------
        def __init__(self):
            """Constructor"""
            wx.Frame.__init__(self, None, size=(320, 243), style=wx.DEFAULT_FRAME_STYLE ^ wx.RESIZE_BORDER)
            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()
    

1 个答案:

答案 0 :(得分:0)

可能你必须使用自己的绘图功能

创建自己的按钮类

或者您可以使用其他人制作的按钮。

请参阅wxpython-a-tour-of-buttons-part-2-of-2/

上的示例