这是目前完整的代码:
import random
import time
from tkinter import *
from tkinter import ttk
mode_chosen = 0
def update_mode():
global mode_chosen
mode_chosen = entry.get()
mode()
def mode():
if mode_chosen == "1":
new_player()
if mode_chosen == "2":
existing_player()
if mode_chosen == "3":
exit()
def new_player():
global username
entry_entry.pack_forget()
entry1_entry.pack()
choose_button.pack(side="bottom")
screen_var.set(" Make a username or\ntype exit to leave the game")
username = entry1.get()
if username == "exit":
exit()
if username != "":
screen_var.set("""Hello {}, here's how to play my game. I will think of a number between 1 and value depending on the difficulty you will choose, this will also decide how many tries you have to guess my number.""".format(username))
game()
def existing_player():
global username
entry_entry.pack_forget()
entry1_entry.pack()
choose_button.pack(side="bottom")
screen_var.set("Please enter your username or type exit to leave the game")
username = entry1.get()
if username == "exit":
exit()
if username != "":
screen_var.set("\nWelcome back {}.".format(username))
game()
def game():
top = 0
tries = 0
screen_var.set("Pick a level of difficulty (e.g 1, 2, 3) or type exit to leave the game")
entry1_entry.pack_forget()
entry2_entry.pack()
level = ""
level = entry2.get()
if level == "1":
top += 10
tries = 2
screen_var.set("\nWell I am thinking of a number between 1 and {}, you have {} tries to guess my number.\nType exit at anytime to leave the game.".format(top, tries + 1))
elif level == "2":
top += 20
tries = 5
screen_var.set("\nWell I am thinking of a number between 1 and {}, you have {} tries to guess my number.\nType exit at anytime to leave the game.".format(top, tries + 1))
elif level == "3":
top += 30
tries = 8
screen_var.set("\nWell I am thinking of a number between 1 and {}, you have {} tries to guess my number.\nType exit at anytime to leave the game.".format(top, tries + 1))
elif level == "exit":
exit()
number = random.randint(1, top)
guesses_taken = 0
entry2_entry.pack_forget()
entry3_entry.pack()
guess = entry3.get
answer = int(guess)
while guesses_taken <= tries:
screen_var.set("Take a guess: ")
guesses_taken += 1
if answer < 1:
print("Guess a number between 1 and {}.".format(top))
guess_taken -= 1
if answer > top:
print("Guess a number between 1 and {}.".format(top))
guess_taken -= 1
if answer < number:
print("Your guess is too low")
if answer > number:
print("Your guess is too high")
if answer == number:
break
if guess == "exit":
exit()
if answer == number:
print("Good job, {}! You guessed my number in {} guesses!".format(username, guesses_taken))
if answer != number:
print("Nope. The number I was thinking of was: {}.".format(number))
def exit():
root.destroy()
root = Tk()
root.title("Guessing Game")
label1 = Label(root, text="Guessing Game")
label1.pack()
screen_var = StringVar()
screen_var.set("""Choose a mode by entering the number:
1: New Player
2: Existing Player
3: Exit
""")
screen_label = Label(root, textvariable=screen_var, justify="left")
screen_label.pack()
answer_label = ttk.Label(root, text="Answer: ")
answer_label.pack()
entry = StringVar()
entry_entry = ttk.Entry(root, textvariable=entry)
entry_entry.pack()
entry1 = StringVar()
entry1_entry = ttk.Entry(root, textvariable=entry1)
entry2 = StringVar()
entry2_entry = ttk.Entry(root, textvariable=entry2)
entry3 = StringVar()
entry3_entry = ttk.Entry(root, textvariable=entry3)
choose_button = ttk.Button(root, text="Choose", command=update_mode)
choose_button.pack()
root.mainloop()
目前,我正在将程序移到python gui中,本部分将介绍:
answer = int(guess)
它给我的错误信息是:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\lewis\AppData\Local\Programs\Python\Python35-32\lib\tkinter\__init__.py", line 1550, in __call__
return self.func(*args)
File "C:\Users\lewis\Desktop\GUI test\Gui_Game.py", line 11, in update_mode
mode()
File "C:\Users\lewis\Desktop\GUI test\Gui_Game.py", line 15, in mode
new_player()
File "C:\Users\lewis\Desktop\GUI test\Gui_Game.py", line 33, in new_player
game()
File "C:\Users\lewis\Desktop\GUI test\Gui_Game.py", line 81, in game
answer = int(guess)
TypeError: int() argument must be a string, a bytes-like object or a number, not 'method'
如果有人能帮我找到解决这个错误的办法,我将不胜感激。谢谢。你知道吗
好吧,那么。你知道吗
在77号线上,你有
guess = entry3.get
entry3.get是一个函数。所以相反
guess = entry3.get()
有时你可以用
print(type(entry3.get))
这样的东西,它会说<class 'method'> <bound method StringVar.get of <tkinter.StringVar object at 0x034A6410>>
它告诉我们它是一个函数,需要在它后面加
()
。你知道吗谢谢你
~z~酷
相关问题 更多 >
编程相关推荐