设计思路:
使用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()