首页 > 解决方案 > 用 Tkinter、Python3 猜数字

问题描述

这是我的代码:

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)上一切正常,当我单击按钮时,我确实得到了第二个屏幕,它正常显示所有对象。当我单击游戏屏幕上的按钮时,我根本没有收到任何反馈,什么也没有发生。

我错过了什么?

非常感谢你 !

标签: pythontkinter

解决方案


问题出在这一行:

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

请注意,“单击”命令位于引号内,因此是一个字符串,而不是您尝试引用的方法。你想要的是:

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

推荐阅读