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模块学习 filecmp 文件比较
Aug 27 Python
python正则分组的应用
Nov 10 Python
python分析网页上所有超链接的方法
May 08 Python
TensorFlow saver指定变量的存取
Mar 10 Python
python3爬取数据至mysql的方法
Jun 26 Python
windows下搭建python scrapy爬虫框架步骤
Dec 23 Python
python贪吃蛇游戏代码
Apr 18 Python
django认证系统 Authentication使用详解
Jul 22 Python
python实现LRU热点缓存及原理
Oct 29 Python
Python 生成一个从0到n个数字的列表4种方法小结
Nov 28 Python
对django 2.x版本中models.ForeignKey()外键说明介绍
Mar 30 Python
keras分类模型中的输入数据与标签的维度实例
Jul 03 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
Amazon Prime Video平台《无限住人 -IMMORTAL-》2020年开始TV放送!
2020/03/06 日漫
php下尝试使用GraphicsMagick的缩略图功能
2011/01/01 PHP
让PHP更快的提供文件下载的代码
2012/06/13 PHP
php中单个数据库字段多列显示(单字段分页、横向输出)
2014/07/28 PHP
PHP语言对接抖音快手小红书视频/图片去水印API接口源码
2020/08/11 PHP
select组合框option的捕捉实例代码
2008/09/30 Javascript
js创建对象的几种常用方式小结(推荐)
2010/10/24 Javascript
jQuery Mobile页面跳转后未加载外部JS原因分析及解决
2013/03/18 Javascript
JS模板实现方法
2013/04/03 Javascript
javascript结合html5 canvas实现(可调画笔颜色/粗细/橡皮)的涂鸦板
2013/04/27 Javascript
Egret引擎开发指南之运行项目
2014/09/03 Javascript
javascript查询字符串参数的方法
2015/01/28 Javascript
基于jQuery倒计时插件实现团购秒杀效果
2016/05/13 Javascript
node.js环境搭建图文详解
2018/09/19 Javascript
微信小程序控制台提示warning:Now you can provide attr &quot;wx:key&quot; for a &quot;wx:for&quot; to improve performance解决方法
2019/02/21 Javascript
用vscode开发vue应用的方法步骤
2019/05/06 Javascript
微信小程序 WXML节点信息查询详解
2019/07/29 Javascript
vue+iview框架实现左侧动态菜单功能的示例代码
2020/07/23 Javascript
[01:14:30]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第二场 8.20.mp4
2019/08/22 DOTA
python里使用正则的findall函数的实例详解
2017/10/19 Python
Python如何处理大数据?3个技巧效率提升攻略(推荐)
2019/04/15 Python
分享CSS3制作卡片式图片的方法
2016/07/08 HTML / CSS
跑步爱好者一站式服务网站:Jack Rabbit
2016/09/01 全球购物
一套VC试题
2015/01/23 面试题
如何执行一个shell程序
2012/11/23 面试题
药学专业个人的自我评价
2013/12/31 职场文书
总经理助理的职责
2014/03/14 职场文书
3.15国际消费者权益日主题活动活动总结
2014/03/16 职场文书
职工年度考核评语
2014/12/31 职场文书
武侯祠导游词
2015/02/04 职场文书
同学聚会通知书
2015/04/20 职场文书
计算机实训心得体会
2016/01/14 职场文书
建房合同协议书
2016/03/21 职场文书
智慧人生:永远不需要向任何人解释你自己
2019/08/20 职场文书
Python sklearn分类决策树方法详解
2022/09/23 Python
ubuntu开机后ROS程序自启动问题
2022/12/24 Servers