そう、裏話。私の大学のプロジェクトでは、ドラムのリズム教師を作成しています。したがって、プログラムが実行するのは、ドラム表記と、そのドラム表記に一致するオーディオファイルをロードすることです。ユーザーが「再生」ボタンを押すと、表記に一致する短いドラムビートが再生されます。これまでのところ、ロードされたWavを再生するためのボタンがあります。ファイル、および画像をロードするための別のボタン。私は理にかなっていると思います。
だから私の質問は、誰かがこれを行う機能を持っていますか?のように、画像と音声ファイルを一緒にロードするためのボタン。また、ボタンをもう一度押すと、別の画像と音声ファイルが読み込まれ、以前に読み込まれたものがすべて上書きされます。かなりの量の画像と音声ファイルをロードします。重要な点は、画像がオーディオファイルと一致する必要があるということです。
繰り返しになりますが、オーディオファイルを再生するボタンと、画像をロードするだけのボタンがあります(私は初心者であり、これらの機能の実行方法を学んでいたため、これを実行しました。
とにかくコードを投稿します、そしてそれはもっと理にかなっているはずです!長い間読んでしまったらごめんなさい!自分がやっていることについて裏話をするつもりだった。
import wxversion
wxversion.select("2.8")
import wx
import wx.media
class MainWindow(wx.Frame):
title = "Main Menu"
def __init__(self, parent, id):
wx.Frame.__init__(self,parent,id,'Window', size=(1000,700))
panel=wx.Panel(self, -1)
self.SetBackgroundColour(wx.Colour(100,100,100))
self.Centre()
self.Show()
status=self.CreateStatusBar()
menubar=wx.MenuBar()
filemenu=wx.Menu()
exitmenu = filemenu.Append(wx.NewId(),"Exit", "Exit Program")
menubar.Append(filemenu,"File")
self.Bind(wx.EVT_MENU, self.onExit, exitmenu)
self.SetMenuBar(menubar)
font1 = wx.Font(30, wx.MODERN, wx.NORMAL, wx.NORMAL, False, u'Consolas')
Text1=wx.StaticText(panel, -1, "Rhythm Trainer", (10,15))
Text1.SetFont(font1)
Text1.SetForegroundColour('white')
btn1 = wx.Button(panel, label='Basic', pos=(100,200), size=(150, 50))
btn1.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, u'Consolas'))
self.Bind(wx.EVT_BUTTON, self.newwindow, btn1)
btn2 = wx.Button(panel, label='Advanced', pos=(100,270), size=(150, 50))
btn2.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, u'Consolas'))
btn3 = wx.Button(panel, label='Notations', pos=(100,340), size=(150, 50))
btn3.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, u'Consolas'))
btn4 = wx.Button(panel, label='Settings', pos=(100,410), size=(150, 50))
btn4.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, u'Consolas'))
btn5 = wx.Button(panel, label="Quit", pos=(820, 550), size=(150, 50))
btn5.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, u'Consolas'))
self.Bind(wx.EVT_BUTTON, self.OnClick, btn5)
def OnClick(self, event):
self.Close()
def OnQuitButton(self, event):
wx.Sleep(1)
self.Destroy()
def onExit(self, event):
self.Destroy()
def newwindow(self, event):
secondWindow=window2(parent=None, id=-1)
secondWindow.Show()
class window2(wx.Frame):
title = "new Window"
def __init__(self, parent, id):
wx.Frame.__init__(self, parent, id, 'Window2', size=(1000,700))
panel=wx.Panel(self, -1)
self.SetBackgroundColour(wx.Colour(100,100,100))
self.Centre()
self.Show()
status=self.CreateStatusBar()
menubar=wx.MenuBar()
filemenu=wx.Menu()
exitmenu = filemenu.Append(wx.NewId(),"Exit", "Exit Program")
menubar.Append(filemenu,"File")
self.Bind(wx.EVT_MENU, self.onExit, exitmenu)
self.SetMenuBar(menubar)
font2 = wx.Font(30, wx.MODERN, wx.NORMAL, wx.NORMAL, False, u'Consolas')
Text2=wx.StaticText(panel, -1, "Rhythm Trainer", (10,15))
Text2.SetFont(font2)
Text2.SetForegroundColour('white')
self.Show(True)
btn1 = wx.Button(panel, label="Back", pos=(820, 550), size=(150, 50))
btn1.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, u'Consolas'))
self.Bind(wx.EVT_BUTTON, self.OnClick, btn1)
btn2 = wx.Button(panel, label="Play", pos=(820, 100), size=(150, 50))
btn2.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, u'Consolas'))
self.Bind(wx.EVT_BUTTON, self.onPlaySound, btn2)
btn3 = wx.Button(panel, label="Stop", pos=(820, 150), size=(150, 50))
btn3.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, u'Consolas'))
self.Bind(wx.EVT_BUTTON, self.onStopSound, btn3)
btn4 = wx.Button(panel, label="Next", pos=(820, 200), size=(150, 50))
btn4.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, u'Consolas'))
self.Bind(wx.EVT_BUTTON, self.loadImage, btn4)
self.panel = wx.Panel(self, -1, pos=(50,50), size=(800, 200))
def loadImage(self, event):
image_file = 'Rock-beats.jpg'
bmp = wx.Image(image_file, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
wx.StaticBitmap(self.panel, -1, bmp, pos=(200, 50), size=(417, 133))
# def onNext(self, event):
"""
Calls the nextPicture method
"""
#self.nextPicture()
def onPlaySound (self, event):
sound = wx.Sound('Test3.wav')
sound.Play(wx.SOUND_ASYNC)
def onStopSound(self, event):
wx.Sound.Stop()
def onExit(self, event):
self.Destroy()
wx.Sound.Stop()
def OnClick(self, event):
wx.Sound.Stop()
self.Close()
if __name__=='__main__':
app=wx.PySimpleApp()
frame=MainWindow(parent=None,id=-1)
Unutbuのコード2.0-これが私の完全な実行可能なコードです-
import wxversion
#wxversion.select("2.8")
import wx
import wx.media
import itertools as IT
import os
IMAGE_DIR = './'
SOUND_DIR = './'
class MainWindow(wx.Frame):
title = "Main Menu"
def __init__(self, parent, id):
wx.Frame.__init__(self,parent,id,'Window', size=(1000,700))
panel=wx.Panel(self, -1)
self.SetBackgroundColour(wx.Colour(100,100,100))
self.Centre()
self.Show()
status=self.CreateStatusBar()
menubar=wx.MenuBar()
filemenu=wx.Menu()
exitmenu = filemenu.Append(wx.NewId(),"Exit", "Exit Program")
menubar.Append(filemenu,"File")
self.Bind(wx.EVT_MENU, self.onExit, exitmenu)
self.SetMenuBar(menubar)
font1 = wx.Font(30, wx.MODERN, wx.NORMAL, wx.NORMAL, False, u'Consolas')
Text1=wx.StaticText(panel, -1, "Rhythm Trainer", (10,15))
Text1.SetFont(font1)
Text1.SetForegroundColour('white')
btn1 = wx.Button(panel, label='Basic', pos=(100,200), size=(150, 50))
btn1.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, u'Consolas'))
self.Bind(wx.EVT_BUTTON, self.newwindow, btn1)
btn2 = wx.Button(panel, label='Advanced', pos=(100,270), size=(150, 50))
btn2.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, u'Consolas'))
btn3 = wx.Button(panel, label='Notations', pos=(100,340), size=(150, 50))
btn3.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, u'Consolas'))
btn4 = wx.Button(panel, label='Settings', pos=(100,410), size=(150, 50))
btn4.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, u'Consolas'))
btn5 = wx.Button(panel, label="Quit", pos=(820, 550), size=(150, 50))
btn5.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, u'Consolas'))
self.Bind(wx.EVT_BUTTON, self.OnClick, btn5)
def OnClick(self, event):
self.Close()
def OnQuitButton(self, event):
self.Destroy()
def onExit(self, event):
self.Destroy()
def newwindow(self, event):
secondWindow=window2(parent=None, id=-1)
secondWindow.Show()
self.Close()
class window2(wx.Frame):
title = "new Window"
def __init__(self, parent, id):
wx.Frame.__init__(self, parent, id, 'Window2', size=(1000,700))
panel=wx.Panel(self, -1)
self.images = IT.cycle([filename for filename in os.listdir(IMAGE_DIR) if filename.endswith('.jpg')])
self.image_file = None
#self.images = IT.cycle(os.listdir(IMAGE_DIR))
#self.image_file = next(self.images)
self.SetBackgroundColour(wx.Colour(100,100,100))
self.Centre()
self.Show()
status=self.CreateStatusBar()
menubar=wx.MenuBar()
filemenu=wx.Menu()
exitmenu = filemenu.Append(wx.NewId(),"Exit", "Exit Program")
menubar.Append(filemenu,"File")
self.Bind(wx.EVT_MENU, self.onExit, exitmenu)
self.SetMenuBar(menubar)
font2 = wx.Font(30, wx.MODERN, wx.NORMAL, wx.NORMAL, False, u'Consolas')
Text2=wx.StaticText(panel, -1, "Rhythm Trainer", (10,15))
Text2.SetFont(font2)
Text2.SetForegroundColour('white')
self.Show(True)
btn1 = wx.Button(panel, label="Back", pos=(820, 550), size=(150, 50))
btn1.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, u'Consolas'))
self.Bind(wx.EVT_BUTTON, self.OnClick, btn1)
btn2 = wx.Button(panel, label="Play", pos=(820, 100), size=(150, 50))
btn2.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, u'Consolas'))
self.Bind(wx.EVT_BUTTON, self.onPlaySound, btn2)
btn3 = wx.Button(panel, label="Stop", pos=(820, 150), size=(150, 50))
btn3.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, u'Consolas'))
self.Bind(wx.EVT_BUTTON, self.onStopSound, btn3)
btn4 = wx.Button(panel, label="Next", pos=(820, 200), size=(150, 50))
btn4.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, u'Consolas'))
self.Bind(wx.EVT_BUTTON, self.loadImage, btn4)
self.panel = wx.Panel(self, -1, pos=(50,50), size=(1000, 180))
def loadImage(self, event):
#image_file = 'Rock-beats.jpg'
#bmp = wx.Image(image_file, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
#wx.StaticBitmap(self.panel, -1, bmp, pos=(200, 50), size=(417, 133))
self.image_file = next(self.images)
image_file = os.path.join(IMAGE_DIR, self.image_file)
bmp = wx.Image(image_file, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
width = bmp.GetWidth()
height = bmp.GetHeight()
wx.StaticBitmap(self.panel, -1, bmp, pos=(200, 50), size=(width, height))
wx.Sound.Stop()
print(self.image_file)
# def onNext(self, event):
#"""
# Calls the nextPicture method
# """
#self.nextPicture()
def onPlaySound (self, event):
#sound = wx.Sound('Test3.wav')
#sound.Play(wx.SOUND_ASYNC)
sound_file, ext = os.path.splitext(self.image_file)
sound_file = os.path.join(SOUND_DIR, sound_file + '.wav')
sound = wx.Sound(sound_file)
sound.Play(wx.SOUND_ASYNC)
print(sound_file)
def onStopSound(self, event):
wx.Sound.Stop()
def onExit(self, event):
self.Destroy()
wx.Sound.Stop()
def OnClick(self, event):
wx.Sound.Stop()
self.Close()
mainwindow=MainWindow(parent=None, id=-1)
mainwindow.Show()
if __name__=='__main__':
app=wx.PySimpleApp()
frame=MainWindow(parent=None,id=-1)
frame.Show()
app.MainLoop()