0

How can I get sound effects when I press buttons on the GUI for Tkinter?

Here is my code:

from Tkinter import *
root = Tk() #root object for the buttons
from PIL import Image, ImageTk #python imaging library

#open the images and store them in photos
image = Image.open("Jolteon.PNG")
image1 = Image.open("Eevee.PNG")
image2 = Image.open("Vaporeon.PNG")
image3 = Image.open("Flareon.PNG")
photo = ImageTk.PhotoImage(image) 
photo1 = ImageTk.PhotoImage(image1)
photo2 = ImageTk.PhotoImage(image2)
photo3 = ImageTk.PhotoImage(image3)

topFrame = Frame(root)
topFrame.pack()
bottomFrame = Frame(root) #some different frames
bottomFrame.pack(side=BOTTOM)

button1 = Button(topFrame, text="Eevee", fg="brown")
button2 = Button(topFrame, text="Jolteon", fg="yellow")
button3 = Button(topFrame, text="Vaporeon", fg="blue")
button4 = Button(topFrame, text="Flareon", fg="red")
button5 = Button(topFrame,image=photo)
button6 = Button(topFrame,image=photo1)
button7 = Button(topFrame,image=photo2) #sdbsdfbdfsbdfb
button8 = Button(topFrame,image=photo3)

#packages the buttons so that it can be produced
button1.pack()
button6.pack()
button2.pack() #sdbsdbsdbsdfbfdsn
button5.pack()
button3.pack()
button7.pack()
button4.pack()
button8.pack()

root.mainloop()

It displays names and pictures of the Eevee trios from Pokemon. What I want is when I press the picture of the pokemon to make the pokemon cry.

How would I go on about implementing this?

enter image description here

nbro
  • 15,395
  • 32
  • 113
  • 196
user3326078
  • 617
  • 1
  • 9
  • 19
  • More info about playing sounds can be found [here](http://stackoverflow.com/q/260738/3714930). If you have a function that plays the sound (say `eeveeSound()`) just use the `Button`'s `command=eeveeSound` option to bind it to that function. – fhdrsdg Nov 27 '14 at 08:39

1 Answers1

2

You have to link the click of your mouse on the image, with an even handler (or simply method):

btn = tkinter.Button(root, text='Play Sound', width=16, bg='#2ff')

btn.bind('<Button-1>', on_click)  
# binding the click of btn with the on_click function 

btn.pack()

# note the parameter 'event', since this is a even handler
def on_click(event): 
    # play music

You could use the pygame module, and specifically you could use its mixer module for playing music. You could easily install the pygame module for your version of Python and for Windows from the official website.

Once the installation is finished, you have first to initialise the Pygame modules with this command pygame.init(). Remember to uninitialize the same modules once you stop using them with the command pygame.quit(). Note that you can initialise single modules, like the mixer module, which is the exact one that you should use.

nbro
  • 15,395
  • 32
  • 113
  • 196