2016-09-11 6 views
0

がこれは現時点ではその完全な範囲内のコードされています。それが来るとき、私はPythonのGUIにプログラムを動かして実行しています現時点ではPythonの3ゲームを推測 - INT()の引数エラー

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() 

誰でもトンに解決策を見つける私を助けることができる場合

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' 

:この部分で:

answer = int(guess) 

それは私のエラーメッセージを表示します彼のエラーは、それは大幅にapprieciatedされるだろう。ありがとう。

+0

() –

+0

推測= entry3.get() –

+0

'推測= entry3.get'は、関数のリファレンスを渡し、あなたは「ドン値を取得します。 'int()'は、文字列、バイト様オブジェクト、または数字を受け入れます。 Do 'guess = entry3.get() ' – Li357

答えて

0

さて、そうです。ライン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>>

を言いますよ。

おかげで、

〜Coolq entry3.getは、おそらくentry3.getれるべき