Python分分钟带你玩转GUI猜数字游戏

代码步骤如下:

1、导入使用的GUI模块 Tkinter

2、创建GUI的主要应用程序入口

3、添加控件并设置相应的属性

4、编写触发事件响应代码

创建GUI的主要应用程序入口

Python分分钟带你玩转GUI猜数字游戏

 

Python分分钟带你玩转GUI猜数字游戏

接下来就是 设置相应的属性

Python分分钟带你玩转GUI猜数字游戏

我们为窗口添加一个控件

用于设置提示文本

Python分分钟带你玩转GUI猜数字游戏

 

Python分分钟带你玩转GUI猜数字游戏

编写触发事件响应代码

Python分分钟带你玩转GUI猜数字游戏

首先我们当然是需要一个随机数的生成,也需要引入这个标准库

定义需要引用到的全局变量,以便后面的函数去使用

Python分分钟带你玩转GUI猜数字游戏

接下来我们需要关闭窗口的事件(destory)

就像我们页面一样,按钮点击就可以把某个不需要显示的控件给关闭掉

```

def btnCloseClick(event):

    root.destory()

```

是不是很简单呢,就两行代码,就可以关闭窗口了,我们拭目以待吧

除了关闭按钮之外,我们当然还需要一个重置窗口

就像我们表单登录一样,重置密码

```

def btnResetClick(event):

    global number # 引用外部变量

    global running # 引用外部变量

    global num # 引用外部变量

    global maxnum # 引用外部变量

    global minnum # 引用外部变量

    number = random.randint(100,999) # 重新赋值

    running = True # 重新赋值

    num = 0 # 重新赋值

    labelChange("请输入100到999之间任意整数:")

    entry_num.delete(0,'end')

    labelRange('目前的范围是[%d,%d]'%(minnum,maxnum))

    print(number)

```

我们要猜数字,当然需要一个文本框用来输入数字,然后确定,给出提示

```

def btnGuessClick(event):

    global num

    global running

    global maxnum

    global minnum

    if running:

        answer = int(entry_num.get())

        if answer == number:

            labelChange("恭喜答对了!")

            num+=1

            running = False

            numGuess()

        elif answer < number:

            num+=1

            labelChange("小了哦")

            if answer>minnum:

                minnum=answer 

        else:

            num+=1

            labelChange("大了哦")

            if answer<maxnum:

                maxnum=answer

        labelRange('目前的范围是[%d,%d]'%(minnum,maxnum))       

    else:

        labelChange('你已经答对啦.')

```

最终我们才对了游戏的结果,我们还要给出信息提示:

```

def numGuess():

    if num == 1:

        labelChange('好棒!一次答对!')

    elif num < 9:

        labelChange('好厉害,尝试次数:'+str(num))

    elif num < 19:

        labelChange('还行,尝试次数:'+str(num))

    else:

        labelChange('您都试了超过20次了。。。。尝试次数:'+str(num))

def labelChange(vText): # 定义控件信息修改函数

    label_info.config(label_info,text=vText)

def labelRange(cText):

    label_range.config(label_range,text=cText)

```

最终所有代码整合起来的结果,由程序运行如下

Python分分钟带你玩转GUI猜数字游戏