Python编写猜数字小游戏

  • 编写猜数字小游戏
    • 一、界面
      • 1.PyQt5
      • 2. wxPython
      • 3. PyGTK
    • 二、Tkinter功能
      • ① 15种核心组件
      • ② 组件的放置和排版(pack,grid,place)
    • 三、代码分解
      • 1.创建主界面
      • 2.填充内容
      • 3.添加button键
      • 4.猜数字函数
    • 四、完整纯净代码
    • 五、总结

编写猜数字小游戏

猜数字小游戏就是顾名思义,程序随机生成一个数字,我们根据提示去猜测,直至猜出正确的数字。

一、界面

Python标准库中内置了一个GUI库——Tkinter,这个库基于Tcl/Tk开发,这个库比较陈旧,提供的开发空间也比较有限,编写出来的GUI界面风格现代程序的GUI风格相差甚远,从用户体验的角度说,tkinter库并不成熟。
这里介绍三个高质量的用户图形界面Python生态库:PyQt5,wxPython,PyGTK。

1.PyQt5

PyQt5是Qt5应用框架的Python第三方库,它有超过620个类和近6000个函数和方法。它是Python中最为成熟的商业级GUI第三方库。这个库是Python语言当前最好的GUI第三方库,它可以在Windows、Linux和MacOS X等操作系统上跨平台使用。

2. wxPython

wxPython是Python语言的一套优秀的GUI图形库,它是跨平台GUI库wxWidgets的Python封装,可以使Python程序员能够轻松地创建健壮可靠、功能强大的图形用户界面的程序。其中,wxWidgets使用C++语言编写,将C/C++语言编写的功能库进行二次封装是Python语言的重要特点之一。

3. PyGTK

PyGTK是基于GTK+的Python语言封装,它提供了各式的可视元素和功能,能够轻松创建具有图形用户界面的程序。PyGTK具有跨平台性,利用它编写的代码能够不加修改的稳定运行在各操作系统中,如Windows,MacOS,Linux等。

二、Tkinter功能

① 15种核心组件

名称 功能
Button 按钮
Canvas 绘图形组件,可以在其中绘制图形
Checkbutton 复选框
Entry 文本框(单行)
Text 文本框(多行)
Frame 框架,将几个组件组成一组
Label 标签,可以显示文字或图片
Listbox 列表框
Menu 菜单
Menubutton 它的功能完全可以使用Menu替代
Message 与Label组件类似,但是可以根据自身大小将文本换行
Radiobutton 单选框
Scale 滑块;允许通过滑块来设置一数字值
Scrollbar 滚动条;配合使用canvas, entry, listbox, and text窗口部件的标准滚动条
Toplevel 用来创建子窗口窗口组件

② 组件的放置和排版(pack,grid,place)

pack组件设置位置属性参数:

名称 功能
after 将组件置于其他组件之后
before 将组件置于其他组件之前
anchor 组件的对齐方式,顶对齐’n’,底对齐’s’,左’w’,右’e’
side 组件在主窗口的位置,可以为’top’,‘bottom’,‘left’,‘right’(使用时tkinter.TOP,tkinter.LEFT)
fill 填充方式 (Y,垂直,X,水平,BOTH,水平+垂直),是否在某个方向充满窗口
expand 1可扩展,0不可扩展,代表控件是否会随窗口缩放

grid组件使用行列的方法放置组件的位置,参数有:

名称 功能
column 组件所在的列起始位置
columnspan 组件的列宽;跨列数
row 组件所在的行起始位置
rowspan 组件的行宽;rowspam=3 跨3行
sticky 对齐方式:NSEW(北南东西)上下左右
padx、pady x方向间距、y方向间距(padx=5)

place组件可以直接使用坐标来放置组件,参数有:

名称 功能
anchor 组件对齐方式;n, ne, e, se, s, sw, w, nw, or center ; (‘n’==N)
x 组件左上角的x坐标
y 组件左上角的y坐标
relx 组件左上角相对于窗口的x坐标,应为0-1之间的小数;图形位置相对窗口变化
rely 组件左上角相对于窗口的y坐标,应为0-1之间的小数
width 组件的宽度
heitht 组件的高度
relwidth 组件相对于窗口的宽度,0-1之间的小数,图形宽度相对窗口变化
relheight 组件相对于窗口的高度,0-1之间的小数

三、代码分解

1.创建主界面

首先导入tkinter这个标准库,然后创建,再去设置窗口的标题,大小等,然后在实现界面的消息循环。

import tkintershuzi = tkinter.Tk()                    #生成主窗口
shuzi.title('猜数字游戏')                #主窗口加标题
shuzi.geometry('400x300')               # 设置主窗口的大小
shuzi.mainloop()

效果展示

2.填充内容

#建立一个文本,设置字的颜色,内容,字的字体、大小
label1 = tkinter.Label(shuzi,fg='black',text="猜数字小游戏",font=('宋体',35,'bold'))
#设置文本框的位置
label1.grid(padx=75)                              label2 = tkinter.Label(shuzi,fg='black',text="游戏规则:\n从1到100中猜数字!!!",font=('宋体',15,'bold'))
label2.grid(padx=10,pady=10)label3 = tkinter.Label(shuzi,fg='black',text="请输入你所猜测的数字:",font=('宋体',15,'bold'))
label3.grid(padx=10,pady=10)text = tkinter.Entry(shuzi,width=30)
text.grid(padx=100)

效果展示

3.添加button键

# 建立一个按钮,command:通过按钮触发比较函数
button1 = tkinter.Button(shuzi, text='确定',command=compare, width=10, font=('微软雅黑', 10,))
# 设置按钮的位置
button1.grid(padx=10,pady=10)# 建立一个按钮,command:通过按钮触发界面退出,bg是背景颜色
button2 = tkinter.Button(shuzi, text='退出游戏',command=shuzi.quit, width=10, bg='yellow', font=('微软雅黑', 10,))
button2.grid(padx=10,pady=10)

效果展示

4.猜数字函数

首先定义随机数number,然后获取用户输入的数字,比较大小,然后跳出不同的提示框。

import random
number = random.randint(1,100)
def compare():use = int(text.get())if use == '':tkinter.messagebox.showerror('警告','输入不能让为空!!!')elif use > number:tkinter.messagebox.showinfo('不正确', '大,大了,老弟!加油!')elif use < number:tkinter.messagebox.showinfo('不正确', '小,小了,老弟!不错呦!')elif use == number:tkinter.messagebox.showinfo('正确', '哎呦,你咋这么聪明的呢!赏你个摸摸哒!')else :tkinter.messagebox.showerror('警告', '输入不正确!!!')

效果展示

四、完整纯净代码

import tkinter
from tkinter import messagebox
import randomshuzi = tkinter.Tk()
shuzi.title('猜数字游戏')
shuzi.geometry('400x300')
number = random.randint(1,100)label1 = tkinter.Label(shuzi,fg='black',text="猜数字小游戏",font=('宋体',35,'bold'))
label1.grid(padx=75)                                    #label2 = tkinter.Label(shuzi,fg='black',text="游戏规则:\n从1到100中猜数字!!!",font=('宋体',15,'bold'))
label2.grid(padx=10,pady=10)label3 = tkinter.Label(shuzi,fg='black',text="请输入你所猜测的数字:",font=('宋体',15,'bold'))
label3.grid(padx=10,pady=10)text = tkinter.Entry(shuzi,width=30)
text.grid(padx=100)def compare():use = int(text.get())if use == '':tkinter.messagebox.showerror('警告','输入不能让为空!!!')elif use > number:tkinter.messagebox.showinfo('不正确', '大,大了,老弟!加油!')elif use < number:tkinter.messagebox.showinfo('不正确', '小,小了,老弟!不错呦!')elif use == number:tkinter.messagebox.showinfo('正确', '哎呦,你咋这么聪明的呢!赏你个摸摸哒!')else :tkinter.messagebox.showerror('警告', '输入不正确!!!')button1 = tkinter.Button(shuzi, text='确定',command=compare, width=10, font=('微软雅黑', 10,))
button1.grid(padx=10,pady=10)button2 = tkinter.Button(shuzi, text='退出游戏',command=shuzi.quit, width=10, bg='yellow', font=('微软雅黑', 10,))
button2.grid(padx=10,pady=10)shuzi.mainloop()

五、总结

首先要注意库的引用,然后在第二个command中我已开始用的shuzi.quit()这个是不正确的,()这个不需要加的,应该舍去。这是我第一次写博客,希望多多支持!多多看书还是很棒的!

Python编写的猜数字小游戏~~~基于Tkinter库相关推荐

  1. Python实现烧脑猜数字小游戏——超详细注解

    文章目录 一.需求分析 二.编程思路 三.完整代码 引用源自   本例是我在中国MOOC学习基础语法时做到的小例子,这里加上我的理解和一些注释分享给大家希望能够对大家有所帮助~ 一.需求分析 案例:烧 ...

  2. Python学习之猜数字小游戏

    print('###### nice to see you , Mr.Feng') temp = input("不妨猜一下我现在想的是哪个数字:") guess = int(tem ...

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

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

  4. 猜数字小游戏(java代码编写)

    猜数字小游戏(java代码编写) 给大家一个用java代码编写的猜数字小游戏 // 导入随机数包import java.util.Random;// 导入从键盘接收数据的函数import java.u ...

  5. Python四行代码实现的猜数字小游戏,基于thinker,带GUI界面

    Python四行代码实现的猜数字小游戏,基于thinker,带GUI界面 from tkinter import * from tkinter import messagebox 导入提示框 from ...

  6. python编写猜大小游戏_python编写猜数字小游戏

    本文实例为大家分享了python编写猜数字小游戏的具体代码,供大家参考,具体内容如下 import random secret = random.randint(1,30) guess = 0 tri ...

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

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

  8. Python 小项目 猜数字小游戏

    欢迎来到<Python 小项目>专栏,这个专栏会不定时更新Python的小项目,大家可以订阅关注哦! 这次,我们要编写一个非常简单的猜数字小游戏! 先看看运行效果: 代码详细教学: 导入模 ...

  9. Python|猜数字小游戏

    Python Python猜数字小游戏 说明 分析 代码实现 补充说明 Python猜数字小游戏 说明 通常由两个人参与,一个人设置一个数字,一个人猜数字,当猜数字的人说出一个数字,由出数字的人告知是 ...

最新文章

  1. c语言dp状态转移方程,[总结-动态规划]经典DP状态设定和转移方程
  2. ZOJ3715 竞选班长求最小花费
  3. 做人,你想过这四个致命的问题吗
  4. C++ gets, getline ( string流)
  5. django的admin中显示为xxxx object以及元类Meta和__str__的使用
  6. 使用sstableloader恢复Cassandra Priam备份
  7. Java (jdk win 10)
  8. OKB持续拉升突破8美元关口
  9. java项目响应慢_java-项目运行缓慢
  10. geohash redis mysql_Redis geohash 地理位置存储
  11. Python——球面两点距离及两条直线夹角的计算
  12. SQL Server Management Studio(SSMS)对象资源管理器的使用以及查询分析器的使用
  13. 测绘人真实故事 | 放弃上万月薪从私企跳回国企
  14. 饥荒进入服务器一直连接,《饥荒》联机版常见问题及解决方法一览
  15. sublime Text3去除文本重复行
  16. oracle数据库报错:ORA-01654: 索引 XXX 无法通过 128 (在表空间 xxx 中) 扩展
  17. 私有化短链接管理系统-魔众短链接系统 v1.0.0
  18. 2021大连高考成绩查询,2021年大连高考各高中成绩及本科升学率数据排名及分析...
  19. 美杜莎暴力破解ssh【服务使用有危险,望君谨慎】
  20. 苹果笔记本显卡性能测试软件,玩的就是心跳 超酷苹果MACBOOK PRO深度评测

热门文章

  1. Python Day8 字符串练习
  2. SM30表维护自动更新值
  3. Java线程生产者消费者问题详解
  4. 马云:刚来公司不到一年的人,谁提…
  5. sql三表查子项目和
  6. IC芯片设计项目管理003:检查清单checklist的应用
  7. cocos2dx-2.2.0孤狼优化整合版安装视频
  8. dotnet C# 将 Byte 二进制数组使用不安全代码快速转换为 int 或结构体数组
  9. ERROR: could not inset ‘edd‘
  10. MOVICS系列教程(三) RUN Module