2014-05-05 109 views
0

這可能是個奇怪的問題,但我沒有找到像這樣的東西,所以我問。我想顯示我的位圖按鈕,我有代碼,它工作得很好,但它不會顯示按鈕!如果我編寫代碼來清空IDLE,它正在工作並顯示位圖按鈕,但在IDLE中,我已經導入了一些圖片,但它沒有顯示按鈕!當然,按鈕還有其他圖像的座標。這裏是代碼:位圖按鈕不會顯示

import wx 

類GameFrame(wx.Frame):

def __init__(self,parent,id): 

    wx.Frame.__init__(self, parent, id, "Project", style= wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX, size=(860, 640)) 
    wx.Frame.CenterOnScreen(self) 

    panel = wx.Panel(self) 
    self.SetBackgroundColour("green") 

在這裏,我進口的一些照片,然後我導入位圖按鈕:

  smallsoundstudioimg = wx.Image("Images/SmallSoundStudio.png", wx.BITMAP_TYPE_ANY).ConvertToBitmap() 
    self.sssbtn=wx.BitmapButton(panel, -1, smallsoundstudioimg, pos=(64,64)) 
    self.Bind(wx.EVT_BUTTON, self.sssaction, self.sssbtn) 
    self.sssbtn.SetDefault() 

def sssaction(self, event): 
    print "Small Sound Studio" 

    if __name__=='__main__': 
    app=wx.App() 
    frame=GameFrame(parent=None,id=-1) 
    frame.Show() 
    app.MainLoop() 

請幫助別人!
非常感謝您的所有建議!

回答

1

您的代碼適用於我。我稍微編輯它以使用wx.ArtProvider,因爲您沒有提供您正在使用的圖像。這是我的版本:

import wx 

class GameFrame(wx.Frame): 
    def __init__(self,parent,id): 

     wx.Frame.__init__(self, parent, id, "Project", style= wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX, size=(860, 640)) 
     wx.Frame.CenterOnScreen(self) 

     panel = wx.Panel(self) 
     self.SetBackgroundColour("green") 

     smallsoundstudioimg = wx.ArtProvider.GetBitmap(wx.ART_NEW, wx.ART_TOOLBAR, (36,36)) 

     self.sssbtn=wx.BitmapButton(panel, -1, smallsoundstudioimg, pos=(64,64)) 
     self.Bind(wx.EVT_BUTTON, self.sssaction, self.sssbtn) 
     self.sssbtn.SetDefault() 

    def sssaction(self, event): 
     print "Small Sound Studio" 

if __name__=='__main__': 
    app=wx.App() 
    frame=GameFrame(parent=None,id=-1) 
    frame.Show() 
    app.MainLoop() 
0

我發現問題在哪裏。我已經編寫了其他.py文件的代碼,並且它在框架的右上角顯示了一點點正方形。如果座標爲0,0,它顯示的是按鈕的非常小的部分,當我點擊它時,它會打印單擊。這裏是代碼:

import wx 

class MyFrame(wx.Frame): 
def __init__(self): 
    wx.Frame.__init__(self, None, wx.ID_ANY, 'Bitmap Button', pos=(300, 150), size=(300, 350)) 
    self.panel1 = wx.Panel(self, -1) 

    imageFile = "SmallSoundStudio.png" 
    image1 = wx.Image(imageFile, wx.BITMAP_TYPE_ANY).ConvertToBitmap() 
    self.button1 = wx.BitmapButton(self.panel1, id=-1, bitmap=image1, pos=(10, 10)) 
    self.button1.Bind(wx.EVT_BUTTON, self.button1Click) 

    roadimg = wx.Bitmap("SmallSoundStudio.png") 
    cntrlrdimg = wx.StaticBitmap(self, -1, roadimg) 
    cntrlrdimg.SetPosition((250, 250)) 

    self.Show(True) 

def button1Click(self,event): 
    print "Clicked" 

application = wx.App() 
window = MyFrame() 
application.MainLoop()