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

这篇博客介绍如何使用Pyqt5和Qt Designer设计并实现一个猜数游戏的图形用户界面。通过设置Pyuic工具,转换UI文件为Python代码,并详细解释了游戏界面的布局、控件绑定及功能实现,包括随机数生成、用户输入验证、游戏逻辑等。最后,还设置了快捷键支持。
摘要由CSDN通过智能技术生成

这一节,我们介绍如何使用 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高效编程,在微信后台回复猜数即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值