wxPython:音板面板[NOW PLAYING]就像在winamp中一样

时间:2016-08-21 21:24:24

标签: python wxpython

我差不多完成了我的wxPython音板,想要实现一个快速功能。

如何将另一个面板添加到wxPython窗口,以及如何在该面板中实现文本[NOW PLAYING]。

到目前为止,这是我的代码:     导入wx     进口口     导入pygame

pygame.init()

##SOUNDS##
##SOUNDS##


class windowClass(wx.Frame):
    __goliathwav = pygame.mixer.Sound("goliath.wav")
    __channelopen = pygame.mixer.Sound("channelopen.wav")

     def __init__(self, *args, **kwargs):
         super(windowClass,self).__init__(*args,**kwargs)
         self.__basicGUI()
     def __basicGUI(self):
         panel = wx.Panel(self)
         menuBar = wx.MenuBar()
         fileButton = wx.Menu()
         aboutButton = wx.Menu()
         exitItem = fileButton.Append(wx.ID_EXIT, 'Exit','status msg...')
         aboutItem = aboutButton.Append(wx.ID_ABOUT, "About")



          menuBar.Append(fileButton, 'File')
          menuBar.Append(aboutButton, 'About this program')

          self.SetMenuBar(menuBar)
          self.Bind(wx.EVT_MENU, self.__quit, exitItem)
          self.Bind(wx.EVT_MENU, self.__onmenuhelpabout, aboutItem)

           self.__sound_dict = { "Goliath" : self.__goliathwav,
                                 "Goliath2" : self.__channelopen
                               }

           self.__sound_list = sorted(self.__sound_dict.keys())

          self.__list = wx.ListBox(panel,pos=(20,20), size=(250,150))
          for i in self.__sound_list:
              self.__list.Append(i)
          self.__list.Bind(wx.EVT_LISTBOX,self.__on_click)
          textarea = wx.TextCtrl(self, -1,
                                      style=wx.TE_MULTILINE|wx.BORDER_SUNKEN|wx.TE_READONLY|
                            wx.TE_RICH2, size=(250,150))
    self.usertext = textarea





    #self.__list2 = wx.ListBox(panel,pos=(19.5,180), size=(251,21)) #second panel
    #for j in self.__sound_list:
    #    self.__list2.Append(i)
    #self.__list2.Bind(wx.EVT_LISTBOX,self.__on_click)


    #wx.TextCtrl(panel,pos=(10,10), size=(250,150))

    self.SetTitle("Soundboard")
    self.Show(True)

def __onmenuhelpabout(self,event):
    dialog = wx.Dialog(self, -1, "[Soundboard]") # ,
                      #style=wx.DIALOG_MODAL | wx.STAY_ON_TOP)
    dialog.SetBackgroundColour(wx.WHITE)
    panel = wx.Panel(dialog, -1)
    panel.SetBackgroundColour(wx.WHITE)
    panelSizer = wx.BoxSizer(wx.VERTICAL)
    boldFont = wx.Font(panel.GetFont().GetPointSize(),
                       panel.GetFont().GetFamily(),
                       wx.NORMAL,wx.BOLD)
    lab1 = wx.StaticText(panel, -1, " SOUNDBOARD ")
    lab1.SetFont(wx.Font(36,boldFont.GetFamily(), wx.ITALIC, wx.BOLD))
    lab1.SetSize(lab1.GetBestSize())

    imageSizer = wx.BoxSizer(wx.HORIZONTAL)
    imageSizer.Add(lab1, 0, wx.ALL | wx.ALIGN_CENTRE_VERTICAL, 5)

    lab2 = wx.StaticText(panel, -1, "Created by youonlylegoonce(cyrex)(Kommander000) for the glory " + \
                                   "of the republic.")
    panelSizer.Add(imageSizer, 0, wx.ALIGN_CENTRE)
    panelSizer.Add((10, 10)) # Spacer.
    panelSizer.Add(lab2, 0, wx.ALIGN_CENTRE)
    panel.SetAutoLayout(True)
    panel.SetSizer(panelSizer)
    panelSizer.Fit(panel)

    topSizer = wx.BoxSizer(wx.HORIZONTAL)
    topSizer.Add(panel, 0, wx.ALL, 10)

    dialog.SetAutoLayout(True)
    dialog.SetSizer(topSizer)
    topSizer.Fit(dialog)

    dialog.Centre()

    btn = dialog.ShowModal()
    dialog.Destroy()





def __on_click(self,event):
    event.Skip()
    name = self.__sound_list[self.__list.GetSelection()]
    sound = self.__sound_dict[name]
    print("[ NOW PLAYING ] ... %s" % name)
    pygame.mixer.Sound.play(sound)


def __quit(self, e):
     self.Close()

def main():
    app = wx.App()
    windowClass(None, -1, style=wx.MAXIMIZE_BOX | wx.CAPTION | wx.CENTRE)
    app.MainLoop()

 main()

1 个答案:

答案 0 :(得分:0)

在:

<DataGrid DataContext="{Binding ViewModel, RelativeSource={RelativeSource AncestorType=UserControl}}" 
ItemsSource="{Binding RunItems}"

输入:

print("[ NOW PLAYING ] ... %s" % name)

P.S。你的缩进是一团糟

相关问题