Угадай номер с помощью Tkinter, Python3 - PullRequest
0 голосов
/ 06 мая 2020

вот мой код:

from tkinter import *
import random

def initGame():
    window = Tk()
    window.title("Guess the number game")

    lbl = Label(window, text="Guess number from 1 to 100. Insert how many tries would you like to have: ", font=("",16))
    lbl.grid(column=0, row=0)

    txt = Entry(window, width=10)
    txt.grid(column=0, row=1)
    txt.focus() #place cursor auto
    def clicked():
        number_dirty = txt.get()
        tries = int(number_dirty)
        playGame(tries)

    btn = Button(window, text="Start", command=clicked)
    btn.grid(column=0, row=2)

    window.geometry('800x600')
    window.mainloop()

def playGame(tries):
    number_of_tries = int(tries)
    number = random.randint(1,100)
    higher_notification = "Number is HIGHER"
    lower_notification = "Number is LOWER"

    game_window = Tk()
    game_window.title("Game Window")

    lbl = Label(game_window, text="Guess numbers between 1 and 100, you have %s tries !" %(number_of_tries), font=("",14))
    lbl.grid(column=0, row=0)
    txt = Entry(game_window, width=10)
    txt.grid(column=0, row=1)
    txt.focus()
    print(number)
    print(number_of_tries)
    def clicked():
        user_input = txt.get()
        compareNumbers(number, user_input)

    btn_try = Button(game_window, text="Try!", command="clicked")
    btn_try.grid(column=0, row=2)
    def compareNumbers(number, user_input):
        if user_input == number:
            messagebox.showinfo('You have won!', 'Right! the number was %s ' %(number))
        else:
            if user_input > number:
                lbl.configure(lower_notification)
                number_of_tries -1
            else:
                lbl.configure(higher_notification)
                number_of_tries -1

    game_window.geometry('600x600')
    game_window.mainloop()


initGame()

На первом экране (initGame) все работает нормально, когда я нажимаю кнопку, я действительно получаю второй экран, на котором все объекты отображаются нормально. Когда я нажимаю кнопку на экране игры, я не получаю никакой обратной связи, ничего не происходит.

Что мне не хватает?

Большое спасибо!

1 Ответ

0 голосов
/ 06 мая 2020

Проблема в этой строке:

btn_try = Button(game_window, text="Try!", command="clicked")

Обратите внимание, что команда «clicked» находится внутри знаков квотирования и поэтому является строкой, а не методом, на который вы пытались ссылаться. Вы хотите:

btn_try = Button(game_window, text="Try!", command=clicked)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...