pyqt5 qmessagebox 不阻碍_使用 Pyqt5 制作猜数游戏 GUI

news/2024/7/8 1:49:53

这一节,我们介绍如何使用 Pyqt5 实现猜数游戏界面。

游戏效果图:

af7dbb1f67c68ca5abf7e08fc5adb2ed.gif

一、使用 Qt Designer

首先,选择 Pycharm ->File->Settings-> Tools->External Tools,点击 + ,添加新项目。name 可以设为 'qt5',Program 那项填写Qt designer 这个 exe 文件所在的位置。

5d42091c1131e965b9e3f02f40757477.png

这时候,Tools 菜单栏就会出现 External Tools 工具栏,点击这一项,就可以启动 Qt designer。

二、Pyuic

同样,选择 Pycharm ->File->Settings-> Tools->External Tools,点击 + ,添加新项目。name 可以设为Pyuic, Program 那项填写你的python.exe文件所在的地址。Arguments 那项填写-m PyQt5.uic.pyuic sample.ui -o sample.py。其中sample.ui为你需要转换的ui文件,sample.py为转化得到的py文件名。Working directory 填写 sample.ui在磁盘中的地址,我选择的位置是D:QQPCMgrDesktopPyui,这同时也是转化后的sample.py文件保存的地址。

9da6e78ba5b0287b01018e0da0e67da2.png

转换得到的 py 文件可以直接继承使用。

三、制作 ui 文件

我们打开 Designer,选择相应控件,将其拖到合适的位置,保存即可 ui 文件。

这里,我选择垂直布局,从上到下分别为 QLineEdit、QLabel、QLabel、QPushButton、QPushButton、QPushButton。其中,标签名默认为空字符串,三个按钮的文字分别为:确认、退出游戏、重新开始。

这样,我们就完成猜数游戏的界面制作了,接下来将控件与功能对应起来即可。

8b8cd8e60613883bf233baa40d489031.png

通过 Pyuic 转化得到的 py 文件代码如下:

19c22f936c668dcde520da2005b88c96.png

然后,我们让主程序继承这个基类,即可得到游戏界面。

四、实现猜数游戏

代码结构如下:

a2193b153bd12185c4148f8f32439df2.png

1. 初始化

第一行的列表推导式,用于生成随机数的右界,并赋值给类变量 random_choice。

前两行代码用于继承父类的 __init__ 参数,并执行 self.setupUi() 函数。其次,初始化实例变量。接着调用 self.random_num(),为以上的实例变量赋值。最后,调用 self.initUi() 函数来初始化界面。初始化的界面,会提示猜数范围。

a0ef680f1df0386b9f372a503ae622dc.png

2. 生成随机数

init_range() 函数为提示范围的左右界赋值, _random_range() 函数随机产生随机数的右界,而 random_num() 用来产生最终的随机数以及提示范围。

1f7da1b9aa1028f16d1c5dc191ec8579.png

3. 初始化界面

self.label.setText() 显示标签的文本内容,标签一初始显示提示范围。self.pushButton.clicked.connect() 是说,当你摁下按钮一,会运行 self.guess() 函数。同理,按钮二、按钮三分别对应退出和重置功能。

b260a83ef6cefea710dddb2002eff34f.png

4. 主程序

text 用来接收 lineEdit 中的文本内容,允许浮点型的字符串。其他类型字符串会提示错误,标签一提示输入不合法,标签二提示随机数的范围,并清空 lineEdit 的文本框,将 text 赋值为空字符串。

如果字符串不为空,继续执行接下来的程序。首先,将得到的浮点数进行向下取整操作(math.floor)。比较用户输入的数值与待猜数,如果待猜数大于用户输入的数值,说明用户猜小了。此时,如果用户输入数值大于提示范围的左界,就更新提示范围的左界为用户输入的数值。此时标签一显示提示范围,标签二显示“猜小了”。如果待猜数小于用户输入的数值,说明用户猜大了,执行相反的操作。如果待猜数与用户输入的数值相同,那么说明用户猜中了数字。QMessageBox.question() 函数用来显示对话框,QMessageBox.Yes 参数是 Yes 键,并提示用户猜中的数值。

4ec37c6a6f1267068a36b55c56d882a8.png

35f975d840c035f3733358b19fcf98b9.png

5. 重置游戏

reset() 函数,用来重置游戏。首先将实例变量设为 None,并执行 self.random_num(),产生随机数,并更新提示范围的左右界。接着清空标签一和标签二的文本内容。最后,初始化界面,并显示待猜数范围。

540b39d8feae7329bf25e53ef9bab862.png

6. 设置快捷键

Qt.Key_Return 代表 Enter 键,按下 Enter 键就相当于按下按钮一,即确认键。Qt.Key_Escape 相当于 Esc 键,按下该键,就会退出游戏。Qt.Key_R 相当于 Ctrl + R 键,用来重置游戏。

3582890c3866068993861f2957d26664.png

以上便是本节的全部内容,主要介绍了如何使用 Pyqt5 实现猜数游戏界面。如果需要获取源代码,请关注微信公众号:Python高效编程,在微信后台回复猜数即可。


http://www.niftyadmin.cn/n/2571499.html

相关文章

C语言输入字母变量怎么声明,C语言教学(三)变量的类型与定义

原标题:C语言教学(三)变量的类型与定义上一篇讲介绍了一些C语言常见的符号,这一篇给大家介绍几个C语言常用的变量类型。这里简单的介绍前面3个常用的类型,太复杂的就不讲那么多,只要记得定义整数变量基本用int就够了,i…

c语言一维数组字符串数组初始化,一维数组的定义、初始化和引用

一维数组的定义、初始化和引用 一维数组的定义、初始化和引用 1.一维数组的定义方式为:类型说明符 数组名[常量表达式](1)数组名的命名方法与变量名相同,遵循标识符命名规则;(2)数组是用方括号括起来的常量表达式,不能用圆括号;(3…

Fastjson-fastjson中$ref对象重复引用问题

当你有城市数据,你需要按国内、国际、热门城市分成数组的形式给出并输出为json格式。 第一个问题,你的数据格式,需要按字母类别划分,比如: "int": {"C": [{"acityId": "1001"…

ipython的安装

linux下python的查看[rootcentOS64A67 ~]# uname -r //查看内核版本2.6.32-573.el6.x86_64 //我的CentOs6.7呵呵[rootcentOS64A67 ~]# rpm -q python //查看安装的python的rpm包python-2.6.6-64.el6.x8…

FastStone Capture(FSCapture)

FastStone Capture(FSCapture) 注册码 企业版序列号: name:bluman serial/序列号/注册码:VPISCJULXUFGDDXYAUYF FastStone Capture 注册码 序列号: name/用户名:TEAM JiOO key/注册码:CPCWXRVCZW30HMKE8KQQ…

.NET Core 跨平台发布(dotnet publish)

.NET Core 跨平台发布(dotnet publish) ,无需安装.NET Core SDK,就可以运行。 前面讲解了.NET Core 的VSCode 开发。现在来讲讲发布(dotnet publish)。 .NET Core and ASP.NET Core 1.0 RC2 runtime and libraries 在五月中旬发布。 .NET Core and ASP.N…

swift 报错 Call can throw, but it is not marked with 'try' and the error is not handled

在开发中使用正则表达式时报了这样的问题:Call can throw, but it is not marked with try and the error is not handled,即: let regex:NSRegularExpression NSRegularExpression(pattern: "^1[3|4|5|7|8][0-9]{9}$", options: …

利用碎片化时间Get Linux系统

利用碎片化时间Get Linux系统 起初,我做着一份与IT毫无关系的工作,每月领着可怜的工资,一直想改变现状,但无从下手,也就是大家熟知的迷茫。我相信,每一个人都会或多或少的经历过迷茫,迷茫每一个…