Nachinka

hangman tkinter

Dec 1st, 2017 (edited)
214
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.74 KB | None | 0 0
  1. # -*- coding: utf8 -*-
  2. from tkinter import Frame, Label, Button, Tk, PhotoImage
  3.  
  4. word = 'apple'
  5. alphabet = 'abcdefghijklmnopqrstuvwxyz'
  6. mistakes_made = 0
  7. max_mistakes = 8
  8. guessed_letters =[]
  9.  
  10. def word_to_print(word, guessed_letters):
  11.     st=[]
  12.     for letter in word:
  13.         if letter in guessed_letters:
  14.             st.append(letter)
  15.         else:
  16.             st.append('_')
  17.     return ' '.join(st)
  18.  
  19. def is_word_guessed(word, guessed_letters):
  20.     for letter in word:
  21.         if letter not in guessed_letters:
  22.             return False
  23.     return True
  24.  
  25. root = Tk()
  26.  
  27. wordFrame = Frame(root)
  28. wordFrame.pack(side='top', fill='x')
  29.  
  30. hangstand = Frame(root).pack(side='bottom')
  31. gif = PhotoImage(file='hang1.gif')
  32. hangstandImage = Label(hangstand, image=gif)
  33. hangstandImage.image = gif
  34. hangstandImage.pack()
  35.  
  36. alphabetFrame = Frame(root)
  37. alphabetFrame.pack(side='bottom',fill='both')
  38.  
  39. wordLabel = Label(wordFrame, text=word_to_print(word,guessed_letters),
  40.  font=('Arial', 24, 'bold'), relief = 'ridge')
  41. wordLabel.pack()
  42.  
  43. def draw_mistakes():
  44.     gif = PhotoImage(file='hang'+str(mistakes_made+1)+'.gif')
  45.     hangstandImage.config(image = gif)
  46.     hangstandImage.image = gif
  47.  
  48. def callback(letter):
  49.     btns[letter].config(state='disabled')
  50.  
  51.     global mistakes_made
  52.     global guessed_letters
  53.  
  54.     guessed_letters.append(letter)
  55.     if not letter in word:
  56.         mistakes_made+=1
  57.         draw_mistakes()
  58.     else:
  59.         wordLabel.configure(text=word_to_print(word,guessed_letters))
  60.  
  61. btns = {}
  62. for letter in alphabet:
  63.     btns[letter] = Button(alphabetFrame, text=letter, padx=3, font=('Arial', 14),
  64.         command = lambda name = letter : callback(name))
  65.     btns[letter].pack(side='left', padx=1)
  66.  
  67.  
  68. root.mainloop()
Add Comment
Please, Sign In to add comment