Reputation: 21
I want to make a simple hangman game with the tkinter module on Python 3. I'm done making all the alphabet buttons.
from tkinter import *
from tkinter import messagebox
top = Tk()
top.resizable(0,0)
top.geometry("300x250")
def helloCallBack():
msg = messagebox.showinfo( "Hello Python", 'HI')
def buttonhuruf():
A = Button(top, text = "A", command = helloCallBack)
B = Button(top, text = "B", command = helloCallBack)
C = Button(top, text = "C", command = helloCallBack)
A.place(x = 50,y = 110)
B.place(x = 70,y = 110)
C.place(x = 90,y = 110)
buttonhuruf()
top.mainloop()
How can I make each button be an input variable, like if I press the A Button, the variable press = 'A'
Upvotes: 0
Views: 1588
Reputation: 5700
You can generate an event to simulate someone hitting a key on the keyboard. Check out http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/universal.html for more details. But, you could change your code to pass in the key to press via the Button, and the handler to do something with it. So...
def helloCallBack():
msg = messagebox.showinfo( "Hello Python", 'HI')
def buttonhuruf():
A = Button(top, text = "A", command = helloCallBack)
could become
def helloCallBack(key):
msg = messagebox.showinfo( "Hello Python", 'HI, %s!' % key)
top.event_generate(key)
def buttonhuruf():
A = Button(top, text = "A", command = lambda k='A':helloCallBack(k))
# similar for B, C, etc...
Give this a try and see where it brings you.
You still need to add widgets to display the key presses. You'll need that to implement your Hangman game.
Above you can see how to pass a particular key to your handler. Depending on how you implement your game, the handler would probably put the character into some widget rather than mimicking a keyboard entry.
Also, to save yourself some typing and make the code more maintainable:
def buttonhuruf():
d = {}
for ch in list('ABCDEFGHIJKLMNOPQRSTUVWXYZ'):
d[ch] = Button(top, text=ch, command=lambda k=ch: helloCallBack(k))
Upvotes: 1