这可能是一个奇怪的问题,但我还没有找到类似的东西,所以我在问。我想显示我的位图按钮,我有代码,它工作得很好,但它不会显示按钮!如果我编写代码来清空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()
请帮助别人!
非常感谢您的所有建议!
答案 0 :(得分: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()
答案 1 :(得分:0)
我发现了问题所在。我已经将代码写入其他.py文档,它在框架的右上角显示了一个小方块。如果坐标为0,0表示按钮的一小部分,当我点击它时,它会打印出Clicked。这是代码:
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()