Reputation:
I'm working on a GUI based hangman game in Python. Upon running my code, I receive the error: "unexpected character after line continuation character", right after my first label line reading "hangman parts". Not sure how to fix. I'm new to Python and not very good at all, so the program likely has numerous other flaws. Any tips would be greatly appreciated.
import tkinter
import tkinter.messagebox
import random
#fruit category
easyWords = ['apple', 'orange', 'mango', 'peach', 'guava']
#space category
mediumWords = ['atmosphere', 'jupiter', 'quasar', 'satellite', 'asteroid']
#science category
hardWords = ['biochemical', 'hemoglobin', 'emulsify', 'reactant', 'dynamo']
def setting():
wordChoice = ''
difficulty = input('''Welcome to hangman, select your difficulty.
Type, easy, medium, or hard to begin:''')
if difficulty == 'easy':
wordChoice = easyWords.random
print('You have selected easy mode, start guessing your letters now in the game window. The category is: fruit')
if difficulty == 'medium':
wordChoice = mediumWords.random
print('You have selected medium mode, start guessing your letters now in the game window. The category is: space')
if difficulty == 'hard':
wordChoice = hardWords.random
print('You have selected hard mode, start guessing your letters now in the game window. The category is: science')
def game():
missGuess = 0
guesses = ''
for char in wordChoice:
label3.print(char),
if char in guesses:
print(char),
else:
label3.print("_"),
missGuess += 1
if missGuess == 1:
label1.print('head')
if missGuess == 2:
label1.print('torso')
if missGuess == 3:
label1.print('left arm')
if missGuess == 4:
label1.print('right arm')
if missGuess == 5:
label1.print('left leg')
if missGuess == 6:
label1.print('right leg'),
class MyGUI():
def __init__(self):
self.main_window = tkinter.Tk()
#create needed frames
self.top_frame = tkinter.Frame(self.main_window)
self.center_frame = tkinter.Frame(self.main_window)
self.bottom_frame = tkinter.Frame(self.main_window)
#create top frame labels
self.label1 = tkinter.Label(self.top_frame, \ text='Hangman parts:')
self.label2 = tkinter.Label(self.top_frame, \ text=' ')
#center frame labels
self.label3 = tkinter.Label(self.center_frame, \ text=' ')
#bottom frame labels
self.label4 = tkinter.Label(self.bottom_frame, \ text='Guess a letter:')
self.entry1 = tkinter.Entry(self.bottom_frame, \ width=5)
self.button1 = tkinter.Button(self.bottom_frame, \ text='Guess', command=self.game) #calls the game method
self.button2 = tkinter.Button(self.bottom_frame, \ text='Exit', \ command=self.main_window.destroy))
#pack top frame labels
self.label1.pack(side='left')
self.label2.pack(side='right')
#pack center frame
self.label3.pack(side='top')
#bottom frame
self.label4.pack(side='left')
self.entry1.pack(side='left')
self.button1.pack(side='left')
self.button2.pack(side='left')
tkinter.mainloop()
setting()
main()
Upvotes: 0
Views: 5098
Reputation: 3079
In your line
self.label1 = tkinter.Label(self.top_frame, \ text='Hangman parts:')
you're using the backslash \
known as "line continuation character" in Python.
This is used for long lines you want to break across a newline, like this:
a = 5\
+ 3
In your code however, the line isn't actually broken, so simply remove the backslashes form these lines, like so:
self.label1 = tkinter.Label(self.top_frame, text='Hangman parts:')
Otherwise, Python is expecting a newline after the \
which it doesn't find - and which leads to the error you're seeing.
Upvotes: 3