python使用pyqt5自制成语接龙 您所在的位置:网站首页 python成语接龙代码 python使用pyqt5自制成语接龙

python使用pyqt5自制成语接龙

#python使用pyqt5自制成语接龙| 来源: 网络整理| 查看: 265

前段时间看了下pyqt5,还写了个计算器玩玩,python使用pyqt5制作计算器,前面也写过一个成语接龙的小程序,自制成语接龙。就想着把他俩结合一下,做个有界面的成语接龙玩玩。

代码如下: 首先是chengyu.py,这个文件是界面文件(chengyu.ui)转出来的,看我上篇[python使用pyqt5制作计算器]这篇文章就知道怎么弄得了,不想知道怎么弄也没关系,直接创建一个chengyu.py文件把我代码粘上去就好了,没有chengyu.ui文件也能跑通代码

# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'chengyu.ui' # # Created by: PyQt5 UI code generator 5.13.0 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(570, 537) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth()) MainWindow.setSizePolicy(sizePolicy) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.label = QtWidgets.QLabel(self.centralwidget) self.label.setGeometry(QtCore.QRect(200, 10, 121, 51)) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth()) self.label.setSizePolicy(sizePolicy) font = QtGui.QFont() font.setPointSize(15) self.label.setFont(font) self.label.setObjectName("label") self.lineEdit_2_zhurenjie = QtWidgets.QLineEdit(self.centralwidget) self.lineEdit_2_zhurenjie.setGeometry(QtCore.QRect(10, 249, 121, 41)) self.lineEdit_2_zhurenjie.setObjectName("lineEdit_2_zhurenjie") self.pushButton = QtWidgets.QPushButton(self.centralwidget) self.pushButton.setGeometry(QtCore.QRect(150, 250, 75, 41)) self.pushButton.setObjectName("pushButton") self.label_2 = QtWidgets.QLabel(self.centralwidget) self.label_2.setGeometry(QtCore.QRect(10, 60, 541, 131)) font = QtGui.QFont() font.setPointSize(11) self.label_2.setFont(font) self.label_2.setObjectName("label_2") self.label_3_qingkuang = QtWidgets.QLabel(self.centralwidget) self.label_3_qingkuang.setGeometry(QtCore.QRect(10, 370, 521, 31)) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.label_3_qingkuang.sizePolicy().hasHeightForWidth()) self.label_3_qingkuang.setSizePolicy(sizePolicy) self.label_3_qingkuang.setText("") self.label_3_qingkuang.setObjectName("label_3_qingkuang") self.label_3_diannaojie = QtWidgets.QLabel(self.centralwidget) self.label_3_diannaojie.setGeometry(QtCore.QRect(150, 360, 401, 20)) self.label_3_diannaojie.setText("") self.label_3_diannaojie.setObjectName("label_3_diannaojie") self.label_4_first_random = QtWidgets.QLabel(self.centralwidget) self.label_4_first_random.setGeometry(QtCore.QRect(20, 210, 511, 31)) self.label_4_first_random.setText("") self.label_4_first_random.setObjectName("label_4_first_random") self.label_5_diannaojie = QtWidgets.QLabel(self.centralwidget) self.label_5_diannaojie.setGeometry(QtCore.QRect(10, 300, 511, 41)) self.label_5_diannaojie.setText("") self.label_5_diannaojie.setObjectName("label_5_diannaojie") # MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 570, 23)) 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", "MainWindow")) self.label.setText(_translate("MainWindow", "成语接龙游戏")) self.pushButton.setText(_translate("MainWindow", "确定")) self.label_2.setText(_translate("MainWindow", "成语接龙游戏,请接成语或俗语,接的第一个字要跟上面的成语最后一个字相同哦\n" "\n" "当你不想玩的时候可以输入\"退出\"结束\n" "\n" "当你玩不过我的时候可以输入\"我认输\"也可以结束游戏,哈哈哈哈"))

接下来是chengyujielong.py文件: 这个脚本需要chengyu.txt,文件里面放的都是成语,爬虫代码

chengyujielong.py:

import random def get_list(): with open("chengyu.txt", "r+", encoding="utf-8") as f: content = f.read() url_list = content[:-1].split(',') return url_list def get_first_word(url_list): randoms=random.choice(url_list) randoms='我先说一个:'+randoms return randoms def jiqijie(url_list,zhuren): chengyus=[] for url in url_list: if url[0]==zhuren[-1]: chengyus.append(url) a=random.choice(chengyus) return a

那么最后就是run.py文件了:

# -*- coding: utf-8 -*- # @Author : LiMengDi # @FILE : run.py.py # @Time : 2019/11/28 14:43 # @Software : PyCharm import sys from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow from chengyu import Ui_MainWindow from chengyujielong import get_list,get_first_word,jiqijie class mwindow(QWidget, Ui_MainWindow): def __init__(self): super(mwindow, self).__init__() self.setupUi(self) self.url_list = get_list() self.randoms = get_first_word(self.url_list) def main_s(self): self.randoms_first(self.randoms) self.pushButton.clicked.connect(self.get_zhurenjie) def randoms_first(self,randoms): self.label_4_first_random.setText(randoms) def get_zhurenjie(self): text=self.lineEdit_2_zhurenjie.text() self.lineEdit_2_zhurenjie.clear() if text=='退出': app.quit() if text == '我认输': app.quit() if text not in self.url_list: self.label_3_qingkuang.setText('耍赖,这不是个成语或俗语,重新说') elif text[0] != self.randoms[-1]: self.label_3_qingkuang.clear() self.label_3_qingkuang.setText('耍赖,你没有接最后一个字,最后一个字是:{}'.format(str(self.randoms[-1]))) else: self.label_3_qingkuang.clear() try: jiqi = jiqijie(self.url_list, text) self.randoms=jiqi self.label_4_first_random.clear() self.label_3_diannaojie.setText('俺接:{}'.format(str(jiqi))) except: self.label_3_qingkuang.setText('俺接不出来,你赢了!') if __name__ == '__main__': app = QApplication(sys.argv) w = mwindow() w.show() w.main_s() sys.exit(app.exec_())

这是我的文件摆放: 在这里插入图片描述 文件就这些,放好后就可以运行run.py文件了,老规矩,看效果: 运行之后出来这个界面 在这里插入图片描述 接下来我们在输入框里瞎填点东西,点确定,看他反应: 在这里插入图片描述 点击确定之后: 在这里插入图片描述 嘿,蒙不住,那咱们给他填个成语,看效果: 在这里插入图片描述 点击确定: 在这里插入图片描述 嘿嘿,看来只能拿出我的真正实力了,接就接,发动我的脑筋,拿出杀手锏接它,不就是正开头的嘛 在这里插入图片描述 嘿嘿嗝,,咱接个正大光明,然后点击确定,看效果: 在这里插入图片描述 继续,继续搞它 在这里插入图片描述 填个法力无边点确定: 在这里插入图片描述 好吧,它也是有些实力的,于是经过我使用我深厚的文学功底与它大战一万八千六百回合之后: 在这里插入图片描述 哈哈哈哈,跟我斗。。

这个游戏结束也很简单,界面上写的规则也有 在这里插入图片描述 你可以在输入框输入“退出”,或者“我认输”,程序就结束了

另外,这个程序的成语都是自己爬取的,不可能把所有成语都爬全,然而判断是根据这些成语作出的,所以有时候你填个成语,它说你填的不是成语,可能只是它本身没有收录这个成语而已,游戏而已,不用当真

好了,今天的程序就玩到这,好好学习,天天向上



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有