How do I restart my script? [closed]
from Tkinter import *
import Tkinter as tk
import tkMessageBox
import time
import re
import string
from random import randint
print "Hangman v1.7 - by Josh & Paul"
bsrly2 = False
bsrly = False
notlie = True
turns = 8
rec = ''
exp = '^[a-z]+$'
textfile = open('dictionary.txt', 'r')
words = textfile.read().split()
n = randint(0, len(words)-1)
word = words[n]
x = 0
w = list(word)
guess = ''
bs = ''
for letter in word:
if letter in guess:
bs += letter + ' '
else:
bs += '_ '
bs = bs.upper()
def MainProgram():
global ui
global guess
global turns
global rec
global bs
global bsrly
global bsrly2
bs = ''
inp = ui.get().strip()
inp = inp.lower()
ui.delete(0, END)
if bsrly2 == True:
root.quit()
if inp == "":
tkMessageBox.showerror("Incorrect Entry", "Error: Please enter a letter")
elif len(inp) > 1:
tkMessageBox.showerror("Incorrect Entry", "Error: Please enter one letter")
elif inp in guess:
tkMessageBox.showerror("Incorrect Entry", "Error: You have already tried that letter")
elif not re.match(exp, inp):
tkMessageBox.showerror开发者_如何转开发("Incorrect Entry", "Error: Please enter a letter")
else:
if inp not in word:
turns -= 1
if turns == 7:
img.configure(image=image0)
if turns == 6:
img.configure(image=image1)
if turns == 5:
img.configure(image=image2)
if turns == 4:
img.configure(image=image3)
if turns == 3:
img.configure(image=image4)
if turns == 2:
img.configure(image=image5)
if turns == 1:
img.configure(image=image6)
guess += ' ' + inp
if turns == 0:
img.configure(image=image7)
bsrly2 = True
if inp not in word:
upd.configure(text= "Wrong, try again")
rec += ' ' + inp
if inp in word:
upd.configure(text= "Thats correct!")
guess2 = rec.upper()
fb2.configure(text = "Wrong letters:" + guess2)
wait = 0
left = 0
for letter in word:
if letter in guess:
bs += letter + " "
else:
bs += '_ '
left += 1
bs = bs.upper()
if left == 0:
bsrly = True
feedback.configure(text=bs)
bs = ''
if bsrly2 == True:
root
upd.configure(text="You lose, the word was " + word)
check()
def check():
if bsrly == True:
root.destroy()
root2 = Tk()
root2.wm_iconbitmap('hmn.ico')
root2.title("You Win!")
youwin = tk.PhotoImage(master=root2, file="YouWin.gif")
winer = Label(master=root2, image=youwin)
winer.image = youwin
winer.grid(row=0, rowspan=20)
wanaquit = Label(master=root2, text="Play Again?")
wanaquit.grid(row=21)
pbuton = Button(master=root2, text="Yes", command=root2.destroy)
pbuton.grid(row=22)
root2.mainloop()
root = Tk()
root.wm_iconbitmap('hmn.ico')
root.title("Hangman v1.7")
image = tk.PhotoImage(file="image.gif")
image0 = tk.PhotoImage(file="image0.gif")
image1 = tk.PhotoImage(file="image1.gif")
image2 = tk.PhotoImage(file="image2.gif")
image3 = tk.PhotoImage(file="image3.gif")
image4 = tk.PhotoImage(file="image4.gif")
image5 = tk.PhotoImage(file="image5.gif")
image6 = tk.PhotoImage(file="image6.gif")
image7 = tk.PhotoImage(file="image7.gif")
content = tk.Frame(root, bg='black')
namelbl = tk.Label(content, text="Enter a letter:", bg="black", fg="green")
feedback = tk.Label(content, text=bs, bg="black", fg="green")
rb = tk.Checkbutton(content, text="Music", bg="black", fg="green")
slave = tk.Label(content, text="", bg="black", fg="green")
slave2 = tk.Label(content, text="", bg="black", fg="green")
upd = tk.Label(content, text="", bg="black", fg="green")
fb2 = tk.Label(content, text="Used letters:", bg="black", fg="green")
ui = tk.Entry(content)
ui["width"] = 2
img = tk.Label(master=content, image=image, bg="black")
ok = tk.Button(content, text="Okay", bg="black", fg="green", command=MainProgram)
ui.focus()
ui.bind('<Return>', (lambda e: MainProgram()))
content.grid(column=0, row=0)
img.grid(column=0, row=0, columnspan=4)
feedback.grid(column=0, row=1)
fb2.grid(column=0, row=2)
slave.grid(row=3)
slave2.grid(row=5)
upd.grid(row=4, columnspan=4)
namelbl.grid(column=0, row=6)
ui.grid(column=1, row=6, sticky=W)
ok.grid(column=1, row=6)
rb.grid(row=7)
root.mainloop()
Hey Everyone, I have a school assignment due soon that is to make a Hangman program with a GUI.
Everything is running smoothly except i dont understand how I can make the script restart when they click Yes in the You Win window?
Insted of putting program logic into module top-level put it into functions. Once you've done that, you just call again your function. With the code structure you have now it is impossible to restart your program (well, at least not without writing another one).
Edit:
Example. Encapsulate this code in a function:
print "Hangman v1.7 - by Josh & Paul"
bsrly2 = False
bsrly = False
notlie = True
turns = 8
rec = ''
exp = '^[a-z]+$'
textfile = open('dictionary.txt', 'r')
words = textfile.read().split()
n = randint(0, len(words)-1)
word = words[n]
x = 0
w = list(word)
guess = ''
bs = ''
for letter in word:
if letter in guess:
bs += letter + ' '
else:
bs += '_ '
bs = bs.upper()
Code above would result in function:
def start():
print "Hangman v1.7 - by Josh & Paul"
bsrly2 = False
bsrly = False
notlie = True
turns = 8
rec = ''
exp = '^[a-z]+$'
textfile = open('dictionary.txt', 'r')
words = textfile.read().split()
n = randint(0, len(words)-1)
word = words[n]
x = 0
w = list(word)
guess = ''
bs = ''
for letter in word:
if letter in guess:
bs += letter + ' '
else:
bs += '_ '
bs = bs.upper()
As for passing variables between your functions you can stick with global variables if you do not have much time left, but it would be best to put all of resulting functions into a class and use instance variables.
精彩评论