📅  最后修改于: 2023-12-03 15:03:56.419000             🧑  作者: Mango
PyQt5 是一个基于 Python 的 GUI 编程工具包,它允许开发人员在 Python 语言中创建各种应用程序和用户界面。本篇文章将介绍如何使用 PyQt5 创建一个简单的猜数字游戏程序。
这个猜数字游戏程序将随机生成一个数字,要求用户通过输入猜测的数字来尝试猜出生成的数字。程序将给出提示,告诉用户输入的数字是偏大还是偏小,直至用户猜中为止。
在介绍具体代码之前,我们需要安装所需要的 Python 模块,其中包括 PyQt5 模块。此处假设已经安装好 Python 和 pip3,执行以下命令来安装所需模块:
pip3 install PyQt5
程序主要由一个 GUI 类 GuessNumber
和一个启动程序的主函数 main()
组成。在 GuessNumber
类中,我们将定义程序界面和逻辑,包括生成随机数、显示输入对话框、显示消息框等等。
import random
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QLineEdit, QMessageBox, QInputDialog
class GuessNumber(QWidget):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
self.setWindowTitle('猜数字游戏')
self.setGeometry(100, 100, 300, 200)
self.label = QLabel('输入你的猜测:', self)
self.label.move(20, 20)
self.textbox_guess = QLineEdit(self)
self.textbox_guess.move(110, 20)
self.textbox_guess.resize(160, 20)
self.btn_guess = QPushButton('猜', self)
self.btn_guess.move(20, 50)
self.btn_guess.clicked.connect(self.make_guess)
self.btn_newgame = QPushButton('新游戏', self)
self.btn_newgame.move(110, 50)
self.btn_newgame.clicked.connect(self.new_game)
self.msgbox = QMessageBox()
self.show()
def new_game(self):
self.number = random.randint(1, 100)
self.guesses = 0
self.msgbox.setText('新游戏开始!')
self.msgbox.exec_()
def make_guess(self):
try:
guess = int(self.textbox_guess.text())
except ValueError:
self.msgbox.setText('请输入一个整数!')
self.msgbox.exec_()
return
self.guesses += 1
if guess == self.number:
self.msgbox.setText(f'恭喜你,猜中了!\n总共猜了 {self.guesses} 次。')
self.msgbox.exec_()
self.new_game()
elif guess < self.number:
self.msgbox.setText('你猜小了!')
self.msgbox.exec_()
else:
self.msgbox.setText('你猜大了!')
self.msgbox.exec_()
在主函数中,我们将实例化 GuessNumber
类并执行 Qt5 的消息循环事件。
if __name__ == '__main__':
app = QApplication(sys.argv)
guess_number = GuessNumber()
sys.exit(app.exec_())
现在我们可以运行程序了。使用以下命令启动程序:
python guess_number.py
程序应该会显示一个窗口,要求输入猜测的数字。在每次猜测后,程序将提示是偏大还是偏小,直到用户猜中为止。
在本篇文章中,我们介绍了如何使用 PyQt5 模块创建一个简单的猜数字游戏程序。使用 PyQt5,开发人员可以轻松创建各种应用程序和用户界面,为用户提供更好的使用体验。