python+gui实现一个猜数字的小游戏

设计思路:
使用python中的tkinter实现窗口猜数字小游戏

具体代码如下:

import tkinter as tk
from tkinter import messagebox
import random


class GuiClass:
    root = tk.Tk(className="猜数字小游戏")  # 初始化窗口
    label = tk.Label(root, text="请输入0到1024之间的整数")  # 定义标签,从属于窗口
    text_default = tk.IntVar(value='')  # 定义变量,默认值为空
    input = tk.Entry(root, width=30, textvariable=text_default)  # 定义输入框,从属于窗口
    ok_btn = tk.Button(root, width=10, text='确认', background='lightblue')  # 定义确认按钮
    cel_btn = tk.Button(root, width=10, text='取消', background='lightblue')  # 定义取消按钮
    anw_btn = tk.Button(root, width=10, text='查看答案', background='lightblue')  # 定义查看答案按钮
    num = random.randint(0, 1024)  # 产生一个随机数,在0-1024之间
    print(num)

    """创建一个显示窗口的方法"""
    def shou_win(self):
        """获取屏幕宽高,使窗口居中"""
        sw = self.root.winfo_screenwidth()
        sh = self.root.winfo_screenheight()
        ww = 430
        wh = 160
        x = (sw-ww)/2
        y = (sh-wh)/2
        self.root.geometry('%dx%d+%d+%d' % (ww, wh, x, y))
        """通过grid布局管理器进行布局"""
        self.label.grid(row=0, column=0, sticky='E', pady=5)
        self.input.grid(row=0, column=1, columnspan=2, pady=5)
        self.input.focus()
        # 点击确认按钮,进行猜数字, 注意,command对应执行的方法不要带括号,否则初始化的时候会执行
        self.ok_btn = tk.Button(self.root,  width=10, text='确认', background='lightblue', command=self.guess)
        # 点击取消按钮,退出游戏
        self.cel_btn = tk.Button(self.root,  width=10, text='取消', background='lightblue', command=self.exit)
        # 点击查看答案按钮,查看答案
        self.anw_btn = tk.Button(self.root,  width=10, text='查看答案', background='lightblue', command=self.answer)
        self.ok_btn.grid(row=1, column=0, sticky='W', pady=5)
        self.cel_btn.grid(row=1, column=1, sticky='W', pady=5)
        self.anw_btn.grid(row=1, column=2, sticky='W', pady=5)

    def guess(self):
        """猜数字"""
        if not self.input.get():  # 判断,如果没有获取到内容,则提示未输入
            messagebox.showerror("错误", "未输入数字!!!")
        else:
            gn = self.input.get()  # 获取输入内容
            while gn.isdigit():  #  gn的值全是数字组成
                gn1 = int(gn)  # 转为整型
                if 0 <= gn1 <= 1024:  # 如果值在0-1024之间
                    if gn1 == self.num:
                        messagebox.showinfo("结果", "恭喜你,猜对啦!")
                        self.root.quit()
                        break
                    elif gn1 < self.num:
                        messagebox.showinfo("结果", "猜小了哦")
                        break
                    else:
                        messagebox.showinfo("结果", "猜大了哦")
                        break
                else:  # 如果值不在0-1024之间,提示
                    messagebox.showerror("错误", "不在区间范围内,请输入0-1024之间的数字")
                    break
            else:  # 如果不是全部由数字组成
                messagebox.showerror("错误", "请输入整数!")
                return None

    def exit(self):
        """退出"""
        self.root.quit()

    def answer(self):
        """查看答案"""
        messagebox.showinfo("答案", self.num)
        self.root.quit()


if __name__ == '__main__':
    g = GuiClass()
    g.shou_win()
    g.root.mainloop()
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值