文章目录

用python开发一个有趣的猜数字小游戏

用于字符串的格式化,通过 {} 和 : 来代替以前的 %

1、 python的GUI编程

1.1 pythonGUI常用库对比

Python 提供了多个(GUI)图形开发界面的库,几个常用 Python GUI 库如下:

Tkinter: Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口 ,可良好地运行在绝大多数平台中。Tkinter 是内置到 python 的安装包中,只要安装好 Python 之后就能 import Tkinter 库,而且 IDLE 也是用 Tkinter 编写而成,对于简单的图形界面 Tkinter 还是能应付自如。

wxPython:wxPython 是一款开源软件,是 Python 语言的一套优秀的 GUI 图形库,允许 Python 程序员很方便的创建完整的、功能健全的 GUI 用户界面。

Jython:Jython 程序可以和 Java 无缝集成。除了一些标准模块,Jython 使用 Java 的模块。Jython 几乎拥有标准的Python 中不依赖于 C 语言的全部模块。比如,Jython 的用户界面将使用 Swing,AWT或者 SWT。Jython 可以被动态或静态地编译成 Java 字节码。

1.2 tkinter组件

1.2.1 tkinter组件列表

1.2.1 tkinter组件共同标准属性

1.2.1 tkinter组件位置管理方法

2、 游戏代码详细解释

# -*- coding: utf-8 -*

import tkinter as tk

import tkinter.messagebox

import random

import re

from PIL import ImageTk, Image **#1、导入需要用到的模块**

game = tk.Tk() **#2、生成主窗口**

game.geometry('400x200') # 设定主窗口大小

game.title('欢迎来到猜数字小游戏') #设定主窗口的标题

answer = random.randint(1, 20) #随机产生正确答案,该答案在猜测数字过程中不能改变,因此必须设置为全局变量

label1 = tk.Label(game, fg ='RoyalBlue',text="游戏规则:系统随机生成1到20之间的一个数,请你猜这个数。"

"如果猜中系统将会提示你猜测成功,不幸如果猜错,"

"系统将会提示你猜大或者猜小,至你猜出正确答案为止,祝你玩得开心!",

wraplength=250,justify='center',font = ('微软雅黑',10))

**#3、组件建立。建立第一个标签,说明游戏规则**

# bg:标签中文本的颜色

# fg:标签中文本的背景色

# text:标签中文本内容

# wraplength:指定多少单位后开始换行(经测试默认字体情况下,一个汉字或中文标点的长度大约wraplength=12单位,

# 一个英文字符(字母,标点等)占6~9个单位,)根据文本中的字符占位,设置wraplength个单位后,字符换行

# justify:指定多行的对齐方式,必须是 left, right, or center

#font:文本字体设置

label1.grid(row=0,columnspan=2,rowspan=2,padx=20, pady=8) **#使用grid函数对组件进行布局**

#Grid(网格)布局管理器会将控件放置到一个二维的表格里,主控件被分割为一系列的行和列

#row:指定组件所在行数,从0开始,0代表第一列

#column:没有写,默认为0

#columnspan:表示这个组件占据的列数,columnspan=2表示占据两列

#rowspan:同理

#padx:设置控件周围水平方向空白区域保留大小

#pady:同理

label2 = tk.Label(game, text='请输入你猜测的数字:',bg='LightSeaGreen',font = ('微软雅黑',10)) **#建立第二个标签,提示输入**

label2.grid(row=2,column=0,sticky='w',padx=5)

#sticky:默认的控件在窗口中的对齐方式是居中。使用sticky选项指定对齐方式,可以选择的值有:N/S/E/W,分别代表上对齐/下对齐/左对齐/右对齐,可以单独使用N/S/E/W,也可以上下和左右组合使用,达到不同的对齐效果。

text = tk.Entry(game, width=20) **#建立一个Entry文本框**

# Entry和Text文本部件的区别:

# Entry:用于接受用户Entry小窗口部件单行文本字符串

# Text:文本小部件提供先进的功能,可以编辑多行文本格式,如改变颜色和字体样式

text.grid(row=2,column=1,sticky='w')

pilImage = Image.open("pig.jpg")

tkImage = ImageTk.PhotoImage(image=pilImage)

#ImageTk.PhotoImage:创建一个Tkinter兼容的照片图像(photo image)

label3 = tk.Label(image=tkImage) **#建立一个标签,用于放图片**

label3.grid(row=0,rowspan=2,column=2, pady=10)

def hit(): **#定义一个函数,在鼠标触发确定按钮时实现该函数**

guess_number = text.get() #使用get函数获取文本框中的内容

if guess_number =='' :

tk.messagebox.showerror("警告", "Oh!输入不能为空")

if not re.findall('[0-9]+',str(guess_number)): #使用正则表达式判断输入是否为数字

tk.messagebox.showerror("警告", "Oh!只能输入一个数字")else:

guess_number = int(float(guess_number))

if guess_number > answer:

tkinter.messagebox.showinfo("错误", "Oh~你猜的数字太大啦")

if guess_number < answer:

tkinter.messagebox.showinfo("错误", "Oh~你猜的数字太小啦")

if guess_number == answer:

tkinter.messagebox.showinfo("正确", "Oh~恭喜你,猜对啦!")

**# 建立一个按钮**

button2 = tkinter.Button(game, text='确定', command=hit,width=10,bg='RoyalBlue',font = ('微软雅黑',10))

#command:通过按钮触发hit函数

button2.grid(row=2,column=2,sticky='s',padx=8, pady=8)

# 使用mainloop进入事件(消息)循环。

game.mainloop()

3、 纯净可运行版代码和程序实现界面

# -*- coding: utf-8 -*

import tkinter as tk

import tkinter.messagebox

import random

import re

from PIL import ImageTk, Image #导入需要用到的模块

game = tk.Tk() # 生成主窗口

game.geometry('400x200')

game.title('欢迎来到猜数字小游戏')

answer = random.randint(1, 20)

label1 = tk.Label(game, fg ='Teal',text="游戏规则:系统随机生成1到20之间的一个数,请你猜这个数。"

"如果猜中系统将会提示你猜测成功,不幸如果猜错,"

"系统将会提示你猜大或者猜小,至你猜出正确答案为止,祝你玩得开心!",

wraplength=250,justify='center',font = ('微软雅黑',10))

label1.grid(row=0,padx=20, pady=8,columnspan=2,rowspan=2)

label2 = tk.Label(game, text='请输入你猜测的数字:',bg='LightSeaGreen',font = ('微软雅黑',10))

label2.grid(row=2,column=0,sticky='w',padx=5)

text = tk.Entry(game, width=20)

text.grid(row=2,column=1,sticky='w')

pilImage = Image.open("pig.jpg")

tkImage = ImageTk.PhotoImage(image=pilImage)

label3 = tk.Label(image=tkImage)

label3.grid(row=0,rowspan=2,column=2, pady=10)

def hit(): #定义一个函数,在鼠标触发确定按钮时实现该函数

guess_number = text.get() #通过get函数获取文本框中的内容

if guess_number =='' :

tk.messagebox.showerror("警告", "Oh!输入不能为空")

else:

if not re.findall('[0-9]+',str(guess_number)):

tk.messagebox.showerror("警告", "Oh!只能输入数字")

else:

guess_number = int(float(guess_number))

if guess_number > answer:

tkinter.messagebox.showinfo("错误", "Oh~你猜的数字太大啦")

if guess_number < answer:

tkinter.messagebox.showinfo("错误", "Oh~你猜的数字太小啦")

if guess_number == answer:

tkinter.messagebox.showinfo("正确", "Oh~恭喜你,猜对啦!")

button2 = tkinter.Button(game, text='确定', command=hit,width=10,bg='RoyalBlue',font = ('微软雅黑',10))

button2.grid(row=2,column=2,sticky='s',padx=8, pady=8)

game.mainloop()

运行效果:

当输入为空时:

当输入非数字文本时:

当输入的数字为小数时:

猜对时:

4、 tips(遇到的问题和规律总结)

4.1、 随机数产生

import random

answer = random.randint(1, 20)

4.2、 弹出不同类型的消息框

if guess_number =='' :

tk.messagebox.showerror("警告", "Oh!输入不能为空")

if not re.findall('[0-9]+',str(guess_number)): #使用正则表达式判断输入是否为数字

tk.messagebox.showerror("警告", "Oh!只能输入一个数字")else:

guess_number = int(float(guess_number))

if guess_number > answer:

tkinter.messagebox.showinfo("错误", "Oh~你猜的数字太大啦")

if guess_number < answer:

tkinter.messagebox.showinfo("错误", "Oh~你猜的数字太小啦")

if guess_number == answer:

tkinter.messagebox.showinfo("正确", "Oh~恭喜你,猜对啦!")

4.3、 确保只接受数字输入

if not re.findall('[0-9]+',str(guess_number)): #使用正则表达式判断输入是否为数字

tk.messagebox.showerror("警告", "Oh!只能输入一个数字")

4.4、 GUI插入图片

pilImage = Image.open("pig.jpg")

tkImage = ImageTk.PhotoImage(image=pilImage)

#ImageTk.PhotoImage:创建一个Tkinter兼容的照片图像(photo image)

label3 = tk.Label(image=tkImage)

label3.grid(row=0,rowspan=2,column=2, pady=10)

4.5、 获取文本框内容实现信息交互

text = tk.Entry(game, width=20)

text.grid(row=2,column=1,sticky='w')

guess_number = text.get()

4.6、 Grid网格布局管理器

4.7、 点击按钮触发事件

button2 = tkinter.Button(game, text=‘确定’, command=hit,width=10,bg=‘RoyalBlue’,font = (‘微软雅黑’,10))

#command:通过按钮触发hit函数

在command指定的函数里进行触发后操作的声明

python实现简单小游戏_用python开发一个有趣的猜数字小游戏(实现简单的GUI界面学习)...相关推荐

  1. 教你如何用C语言设计一个有趣的猜数字小游戏

    目录 前言 猜数字游戏 打印菜单 处理玩家选择的操作 编写猜数字游戏函数 游戏中要猜数字从哪来?(配置随机数生成器) 时间戳 开始生成随机数 game函数内部编写 完整代码 总结 前言 好久不见,今天 ...

  2. 简单有趣的猜数字小游戏

    用c语言设计一款猜数字小游戏,只需四步就能轻松搞定! 第一步.生成1~100的随机数 1.该如何生成随机数呢? 首先我们先一步到位,上个截图 图1 1.1.srand C语⾔中提供了⼀个函数叫 sra ...

  3. Python:有趣的猜数字小游戏

    目录 程序要求 程序源代码 random模块使用 if--elif--else语句介绍 print()的作用 格式化字符(format方法) time模块介绍 结语 程序要求 1.系统将随机生成一个1 ...

  4. JS_小工具_自己写了一个画像素画的小工具

    自己抽空做了一个画像素画的小工具,界面比较简单,但也可以画着玩.呵呵. 有意思的地方在于可以把画的内容保存为一个数组,可以很方便地还原成图案... 主要的JS代码: //画板表格 var iconTa ...

  5. 送女朋友的java小程序_用C编写一个送给女朋友的情人节小程序 可爱!

    本文实例为大家分享了C编写送给女朋友的小程序,供大家参考,具体内容如下 #include #include #include #include #include using namespace std ...

  6. python猜数字小游戏制作

    教大家做一个简易的猜数字的游戏,但确实蛮简单的,我这个四年级的小盆友也才学了一天,所以给那些不会的教一下. 我们先来看导入模块: """ 简易python猜数小游戏&qu ...

  7. 【c语言】和【Java】版本的猜数字小游戏

    目录 前言 一.c语言版本 1.游戏设计思路 2.rand()及srand()函数的使用 2.取模确定取值范围 3.条件运算符 4.利用二分法进行猜测 二.java版本 1.Math.random() ...

  8. 用python做C语言的猜数字游戏,[Python3 练习] 007 简单的猜数字小游戏

    题目:简单的猜数字小游戏 (1) 描述 程序随机生成一个数字,玩家用键盘输入所猜数字,在规定次数内猜对为胜. (2) 要求 程序随机生成一个 1 到 100 的自然数 有 7 次机会去猜 机会用尽之前 ...

  9. python编写一个简单的猜数字小游戏

    该脚本包含了python基础的部分内容,python初学者既可以学习借鉴,也可以向朋友去装13. 本次编写的内容需要导入一个第三方模块random,可获得规定范围的随机数. 首先打开pycharm中下 ...

最新文章

  1. Ubuntu 13.10 安装Terminalx 后更改默认终端设置
  2. HDU 2573 HDOJ 2573 Typing ACM 2573 IN HDU
  3. js中两个对象的比较
  4. 简易的bbs论坛开发过程上(后台开发)
  5. 音视频技术开发周刊(第120期)
  6. ORACLE基础应用学习-- 各种故障的恢复方法总结
  7. 阿里云服务器被[kthreaddi]挖矿病毒攻击
  8. python中的zip模块
  9. ios定位权限plist_iOS-info.plist 中添加定位权限
  10. Java PipedInputStream receive()方法与示例
  11. 【华为云实战开发】4.如何使用TortoiseGit进行云端代码托管
  12. 这份字节、阿里内部秘传的面经,被我搞到手了……
  13. 属性绑定v-bind指令
  14. 第三方支付接口开发原理
  15. 红蓝军模拟对抗三维电子沙盘开发教程第十课 wpf建立3D GIS数字地球
  16. 74HC595级联电路编程篇(三)
  17. 谈谈小程序的赚钱方式
  18. 1053: 正弦函数 C语言
  19. 从苏宁电器到卡巴斯基(第二部)第03篇:我在卡巴的日子 III
  20. 使用Nmap对靶机进行信息收集以及Nessus的安装并对靶机进行的漏洞扫描

热门文章

  1. 端口简介与Linux下mysql端口号操作
  2. C语言-手写任务队列
  3. 凤凰卫视对话信联征信,解读中国社会诚信体系建设
  4. 坚持这九件事,你会越来越顺!
  5. Idea快速选中一行的四种方式
  6. 使用 netlify 部署你的前端应用
  7. nonlocal global
  8. nonlocal python3_Python中的global和nonlocal关键字
  9. sched_setscheduler()
  10. 为何要用sys.exit()退出?