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 时间操作例子和时间格式化参数小结
Apr 24 Python
Python实现的概率分布运算操作示例
Aug 14 Python
Python tkinter实现的图片移动碰撞动画效果【附源码下载】
Jan 04 Python
python构建基础的爬虫教学
Dec 23 Python
python如何实现代码检查
Jun 28 Python
解决django中ModelForm多表单组合的问题
Jul 18 Python
Python自动化操作实现图例绘制
Jul 09 Python
python实现发送带附件的邮件代码分享
Sep 22 Python
Python爬虫Scrapy框架CrawlSpider原理及使用案例
Nov 20 Python
Python字节单位转换(将字节转换为K M G T)
Mar 02 Python
Python通过m3u8文件下载合并ts视频的操作
Apr 16 Python
Python作用域和名称空间的详细介绍
Apr 13 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
YII动态模型(动态表名)支持分析
2016/03/29 PHP
PHP PDOStatement::columnCount讲解
2019/01/30 PHP
jquery 新手学习常见问题解决方法
2010/04/18 Javascript
首页图片漂浮效果示例代码
2014/06/05 Javascript
Validform表单验证总结篇
2016/10/31 Javascript
AngularJs篇:使用AngularJs打造一个简易权限系统的实现代码
2016/12/26 Javascript
Angular4绑定html内容出现警告的处理方法
2017/11/03 Javascript
vue在使用ECharts时的异步更新和数据加载详解
2017/11/22 Javascript
Angular设置别名alias的方法
2018/11/08 Javascript
基于Vue组件化的日期联动选择器功能的实现代码
2018/11/30 Javascript
jQuery实现经典的网页3D轮播图封装功能【附源码下载】
2019/02/15 jQuery
Vue的props父传子的示例代码
2020/05/20 Javascript
python实现识别手写数字 python图像识别算法
2020/03/23 Python
Python实现连接两个无规则列表后删除重复元素并升序排序的方法
2018/02/05 Python
Python基于递归算法求最小公倍数和最大公约数示例
2018/07/27 Python
在PyCharm中三步完成PyPy解释器的配置的方法
2018/10/29 Python
为什么从Python 3.6开始字典有序并效率更高
2019/07/15 Python
Python命名空间namespace及作用域原理解析
2020/06/05 Python
Tensorflow--取tensorf指定列的操作方式
2020/06/30 Python
CSS3制作日历实现代码
2012/01/21 HTML / CSS
红色连衣裙精品店:Red Dress Boutique
2018/08/11 全球购物
AJAX的全称是什么
2012/11/06 面试题
自我鉴定范文
2013/11/10 职场文书
物业管理计划书
2014/01/10 职场文书
大学生素质拓展活动方案
2014/02/11 职场文书
煤矿班组长竞聘书
2014/03/31 职场文书
文明班级建设方案
2014/05/15 职场文书
无犯罪记录证明样本
2015/06/16 职场文书
导游词之无锡唐城
2019/12/12 职场文书
Python 如何解决稀疏矩阵运算
2021/05/26 Python
Python 内置函数速查表一览
2021/06/02 Python
Java spring单点登录系统
2021/09/04 Java/Android
上个世纪50年代的可穿戴技术:无线电帽子
2022/02/18 无线电
vue使用wavesurfer.js解决音频可视化播放问题
2022/04/04 Vue.js
详解OpenCV曝光融合
2022/04/29 Python
Java中生成微信小程序太阳码的实现方案
2022/06/01 Java/Android