pycharm实现猜数游戏


Posted in Python onDecember 07, 2020

本文实例为大家分享了pycharm实现猜数游戏的具体代码,供大家参考,具体内容如下

1. 设计界面

如下所示,利用QTdesigner设计的界面:

pycharm实现猜数游戏

pycharm实现猜数游戏

然后将设计好的界面转换为.py文件:

guess_number.py

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'guess_number.ui'
#
# Created by: PyQt5 UI code generator 5.15.2
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
 def setupUi(self, MainWindow):
 MainWindow.setObjectName("MainWindow")
 MainWindow.resize(580, 328)
 icon = QtGui.QIcon()
 icon.addPixmap(QtGui.QPixmap("../../../Icon/Comment.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
 icon.addPixmap(QtGui.QPixmap("../../../Icon/Comment.svg"), QtGui.QIcon.Normal, QtGui.QIcon.On)
 icon.addPixmap(QtGui.QPixmap("../../../Icon/Comment.svg"), QtGui.QIcon.Disabled, QtGui.QIcon.Off)
 icon.addPixmap(QtGui.QPixmap("../../../Icon/Comment.svg"), QtGui.QIcon.Disabled, QtGui.QIcon.On)
 icon.addPixmap(QtGui.QPixmap("../../../Icon/Comment.svg"), QtGui.QIcon.Active, QtGui.QIcon.Off)
 icon.addPixmap(QtGui.QPixmap("../../../Icon/Comment.svg"), QtGui.QIcon.Active, QtGui.QIcon.On)
 icon.addPixmap(QtGui.QPixmap("../../../Icon/Comment.svg"), QtGui.QIcon.Selected, QtGui.QIcon.Off)
 icon.addPixmap(QtGui.QPixmap("../../../Icon/Comment.svg"), QtGui.QIcon.Selected, QtGui.QIcon.On)
 MainWindow.setWindowIcon(icon)
 self.centralwidget = QtWidgets.QWidget(MainWindow)
 self.centralwidget.setObjectName("centralwidget")
 self.gridLayout_4 = QtWidgets.QGridLayout(self.centralwidget)
 self.gridLayout_4.setObjectName("gridLayout_4")
 spacerItem = QtWidgets.QSpacerItem(20, 50, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
 self.gridLayout_4.addItem(spacerItem, 0, 1, 1, 1)
 spacerItem1 = QtWidgets.QSpacerItem(181, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
 self.gridLayout_4.addItem(spacerItem1, 1, 3, 1, 1)
 spacerItem2 = QtWidgets.QSpacerItem(180, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
 self.gridLayout_4.addItem(spacerItem2, 1, 0, 1, 1)
 self.gridLayout_3 = QtWidgets.QGridLayout()
 self.gridLayout_3.setObjectName("gridLayout_3")
 spacerItem3 = QtWidgets.QSpacerItem(17, 37, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
 self.gridLayout_3.addItem(spacerItem3, 0, 2, 1, 1)
 self.gridLayout_2 = QtWidgets.QGridLayout()
 self.gridLayout_2.setObjectName("gridLayout_2")
 self.button = QtWidgets.QPushButton(self.centralwidget)
 self.button.setObjectName("button")
 self.gridLayout_2.addWidget(self.button, 2, 1, 1, 1)
 self.inputnumber = QtWidgets.QLineEdit(self.centralwidget)
 self.inputnumber.setObjectName("inputnumber")
 self.gridLayout_2.addWidget(self.inputnumber, 0, 0, 1, 3)
 spacerItem4 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
 self.gridLayout_2.addItem(spacerItem4, 2, 2, 1, 1)
 spacerItem5 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
 self.gridLayout_2.addItem(spacerItem5, 2, 0, 1, 1)
 spacerItem6 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
 self.gridLayout_2.addItem(spacerItem6, 1, 1, 1, 1)
 self.gridLayout_3.addLayout(self.gridLayout_2, 1, 1, 2, 2)
 spacerItem7 = QtWidgets.QSpacerItem(37, 17, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
 self.gridLayout_3.addItem(spacerItem7, 1, 3, 1, 1)
 spacerItem8 = QtWidgets.QSpacerItem(37, 17, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
 self.gridLayout_3.addItem(spacerItem8, 1, 0, 1, 1)
 spacerItem9 = QtWidgets.QSpacerItem(17, 37, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
 self.gridLayout_3.addItem(spacerItem9, 3, 1, 1, 1)
 self.gridLayout_4.addLayout(self.gridLayout_3, 1, 1, 1, 2)
 spacerItem10 = QtWidgets.QSpacerItem(20, 49, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
 self.gridLayout_4.addItem(spacerItem10, 2, 2, 1, 1)
 MainWindow.setCentralWidget(self.centralwidget)
 self.menubar = QtWidgets.QMenuBar(MainWindow)
 self.menubar.setGeometry(QtCore.QRect(0, 0, 580, 28))
 self.menubar.setObjectName("menubar")
 MainWindow.setMenuBar(self.menubar)
 self.statusbar = QtWidgets.QStatusBar(MainWindow)
 self.statusbar.setObjectName("statusbar")
 MainWindow.setStatusBar(self.statusbar)

 self.retranslateUi(MainWindow)
 QtCore.QMetaObject.connectSlotsByName(MainWindow)

 def retranslateUi(self, MainWindow):
 _translate = QtCore.QCoreApplication.translate
 MainWindow.setWindowTitle(_translate("MainWindow", "猜数游戏"))
 self.button.setText(_translate("MainWindow", "我猜"))
 self.inputnumber.setText(_translate("MainWindow", "在这里输入数字"))

2.对ui界面的功能具体实现

如果直接使用生成好的.py文件使用起来不是很方便,修改界面以后重新生成的.py文件会直接覆盖,这里我采用一个新类直接获取前面设计好的界面从而实现算法与界面程序分离,先上代码。

main.py

import sys
import guess_number
from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox, QWidget
from random import randint


class guess_ui(QMainWindow):
 def __init__(self):
 # get ui from guess_number
 super().__init__()
 self.num = randint(1, 100)
 self.MainWindow = QMainWindow()
 self.InitUI()

 def InitUI(self):
 ui = guess_number.Ui_MainWindow()
 ui.setupUi(self)
 button = self.findChild(QWidget, 'button')
 button.clicked.connect(self.show_message)
 self.show()
 # self.MainWindow.show()

 def show_message(self):
 inputnumber = self.findChild(QWidget, 'inputnumber')
 guessnumber = int(inputnumber.text())
 print(guessnumber)
 if guessnumber > self.num:
  QMessageBox.about(self, 'see the result', 'bigger!')
  inputnumber.setFocus()
 elif guessnumber < self.num:
  QMessageBox.about(self, 'see the result', 'smaller!')
  inputnumber.setFocus()
 else:
  QMessageBox.about(self, 'see the result', 'true')
  self.num = randint(1, 100)
  inputnumber.clear()
  inputnumber.setFocus()

 def closeEvent(self, event):
 reply = QMessageBox.question(self, 'confirm', 'Are you sure?', QMessageBox.Yes | QMessageBox.No)
 if reply == QMessageBox.Yes:
  event.accept()
 else:
  event.ignore()


if __name__ == '__main__':
 app = QApplication(sys.argv)
 guess = guess_ui()
 sys.exit(app.exec_())

3.对部分代码的解析

class guess_ui(QMainWindow):

将此类直接从QMainWindow继承过来可以实现对QT事件的重写,事件重现代码如下:

def closeEvent(self, event):
 reply = QMessageBox.question(self, 'confirm', 'Are you sure?', QMessageBox.Yes | QMessageBox.No)
 if reply == QMessageBox.Yes:
  event.accept()
 else:
  event.ignore()

在界面文件中按钮的定义是直接add进去的,所以定义某个控件功能首先要获取该控件,代码如下所示:

button = self.findChild(QWidget, 'button')

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现的各种排序算法代码
Mar 04 Python
python批量生成本地ip地址的方法
Mar 23 Python
Python中关于字符串对象的一些基础知识
Apr 08 Python
python实现字符串和日期相互转换的方法
May 13 Python
Python装饰器使用实例:验证参数合法性
Jun 24 Python
MySQL中表的复制以及大型数据表的备份教程
Nov 25 Python
python在TXT文件中按照某一字符串取出该字符串所在的行方法
Dec 10 Python
Python比较配置文件的方法实例详解
Jun 06 Python
python连接打印机实现打印文档、图片、pdf文件等功能
Feb 07 Python
基于PyQT实现区分左键双击和单击
May 19 Python
Python中异常处理用法
Nov 27 Python
python opencv将多个图放在一个窗口的实例详解
Feb 28 Python
Python Selenium XPath根据文本内容查找元素的方法
Dec 07 #Python
Selenium关闭INFO:CONSOLE提示的解决
Dec 07 #Python
pyqt5实现井字棋的示例代码
Dec 07 #Python
Selenium环境变量配置(火狐浏览器)及验证实现
Dec 07 #Python
详解BeautifulSoup获取特定标签下内容的方法
Dec 07 #Python
使用BeautifulSoup4解析XML的方法小结
Dec 07 #Python
BeautifulSoup获取指定class样式的div的实现
Dec 07 #Python
You might like
在普通HTTP上安全地传输密码
2007/07/21 PHP
discuz authcode 经典php加密解密函数解析
2020/07/12 PHP
使用PHP把HTML生成PDF文件的几个开源项目介绍
2014/11/17 PHP
php自动提交表单的方法(基于fsockopen与curl)
2016/05/09 PHP
PHP微信支付开发实例
2016/06/22 PHP
两种WEB下的模态对话框 (asp.net或js的分别实现)
2009/12/02 Javascript
js 获取、清空input type=&quot;file&quot;的值(示例代码)
2013/12/24 Javascript
通过$(this)使用jQuery包装后的方法或属性
2014/05/18 Javascript
javascript event在FF和IE的兼容传参心得(绝对好用)
2014/07/10 Javascript
javascript断点调试心得分享
2016/04/23 Javascript
js改变css样式的三种方法推荐
2016/06/28 Javascript
微信小程序如何获取openid及用户信息
2018/01/26 Javascript
浅谈layer弹出层按钮颜色修改方法
2019/09/11 Javascript
Vue基础配置讲解
2019/11/29 Javascript
js实现QQ邮箱邮件拖拽删除功能
2020/08/27 Javascript
js删除指定位置超链接中含有百度与360的标题
2021/01/06 Javascript
python使用mysqldb连接数据库操作方法示例详解
2013/12/03 Python
python:print格式化输出到文件的实例
2018/05/14 Python
Tensorflow 实现修改张量特定元素的值方法
2018/07/30 Python
记一次python 内存泄漏问题及解决过程
2018/11/29 Python
Python实现统计英文文章词频的方法分析
2019/01/28 Python
python使用正则来处理各种匹配问题
2019/12/22 Python
Django 用户登陆访问限制实例 @login_required
2020/05/13 Python
python识别验证码的思路及解决方案
2020/09/13 Python
CSS3 translate导致字体模糊的实例代码
2019/08/30 HTML / CSS
Spartoo美国:欧洲排名第一的在线时装零售商
2019/12/12 全球购物
工艺工程师工作职责
2013/11/23 职场文书
办公室保洁员岗位职责
2013/12/02 职场文书
学生会离职感言
2014/02/11 职场文书
人力资源作业细则
2014/03/03 职场文书
购房意向书
2014/04/01 职场文书
暑假安全教育广播稿
2014/09/10 职场文书
单位委托函范文
2015/01/29 职场文书
2016入党积极分子党校培训心得体会
2016/01/06 职场文书
详解CSS中postion和opacity及cursor的特性
2022/08/14 HTML / CSS