Python 13 使用Qt Designer

放一张今天的标题图,今天讲Qt Designer
在这里插入图片描述
然后是今天的作业,快乐打地鼠
在这里插入图片描述

  1. 先安装Qt Designer
    打开cmd,输入pip3 install PyQt5-tools
    在这里插入图片描述
    然后就可以开始下载了,因为我已经下过了,现在是这样的
    在这里插入图片描述

  2. 然后是在目录…\Python36\Lib\site-packages\pyqt5-tools中找到Qt Designer
    其实我本来没找到这个目录后来我发现一个方法:可以从IDLE的地址进去↓
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  3. 然后运行Qt Designer
    在这里插入图片描述

  4. Qt Designer形成的文件是.ui格式的,这是为了可以让文件不仅仅可以用Python运行,还可以在其他平台上使用。为了能够在Python平台上使用,应该将.ui文件转化成.py文件
    在cmd中输入pyuic5 -o catchmouse.py catchmouse.ui 也就是

pyuic5 -o 你需要的py文件 你有的ui文件

但是不知道为什么我直接输入会报错
在这里插入图片描述
得先进入我放ui文件的地址才能进行操作
在这里插入图片描述
如果回车之后,出现了之前的地址就是生成成功了
在这里插入图片描述
同一个目录下就可以找到了
在这里插入图片描述

5.放一张我的打地鼠的Qt Designer的设计图片
在这里插入图片描述
再放一个效果图
在这里插入图片描述
预留一个代码位√(catchmouse.py和13_.py)
写于一个午饭不香的中午
12.24 更新 贴一下代码
catchmouse.py

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

# Form implementation generated from reading ui file 'catchmouse.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_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(404, 372)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(200)
        sizePolicy.setVerticalStretch(200)
        sizePolicy.setHeightForWidth(Dialog.sizePolicy().hasHeightForWidth())
        Dialog.setSizePolicy(sizePolicy)
        Dialog.setMinimumSize(QtCore.QSize(404, 372))
        self.pushButton_2 = QtWidgets.QPushButton(Dialog)
        self.pushButton_2.setGeometry(QtCore.QRect(120, 110, 71, 71))
        self.pushButton_2.setStyleSheet("background-image: url(:/hole.png);\n"
"")
        self.pushButton_2.setText("")
        self.pushButton_2.setObjectName("pushButton_2")
        self.pushButton_3 = QtWidgets.QPushButton(Dialog)
        self.pushButton_3.setGeometry(QtCore.QRect(210, 110, 71, 71))
        self.pushButton_3.setStyleSheet("background-image: url(:/hole.png);")
        self.pushButton_3.setText("")
        self.pushButton_3.setObjectName("pushButton_3")
        self.pushButton_4 = QtWidgets.QPushButton(Dialog)
        self.pushButton_4.setGeometry(QtCore.QRect(30, 200, 71, 71))
        self.pushButton_4.setStyleSheet("background-image: url(:/hole.png);")
        self.pushButton_4.setText("")
        self.pushButton_4.setObjectName("pushButton_4")
        self.pushButton_5 = QtWidgets.QPushButton(Dialog)
        self.pushButton_5.setGeometry(QtCore.QRect(120, 200, 71, 71))
        self.pushButton_5.setStyleSheet("background-image: url(:/hole.png);")
        self.pushButton_5.setText("")
        self.pushButton_5.setObjectName("pushButton_5")
        self.pushButton_6 = QtWidgets.QPushButton(Dialog)
        self.pushButton_6.setGeometry(QtCore.QRect(210, 200, 71, 71))
        self.pushButton_6.setStyleSheet("background-image: url(:/hole.png);")
        self.pushButton_6.setText("")
        self.pushButton_6.setObjectName("pushButton_6")
        self.pushButton_7 = QtWidgets.QPushButton(Dialog)
        self.pushButton_7.setGeometry(QtCore.QRect(30, 290, 71, 71))
        self.pushButton_7.setStyleSheet("background-image: url(:/hole.png);")
        self.pushButton_7.setText("")
        self.pushButton_7.setObjectName("pushButton_7")
        self.pushButton_8 = QtWidgets.QPushButton(Dialog)
        self.pushButton_8.setGeometry(QtCore.QRect(120, 290, 71, 71))
        self.pushButton_8.setStyleSheet("background-image: url(:/hole.png);")
        self.pushButton_8.setText("")
        self.pushButton_8.setObjectName("pushButton_8")
        self.pushButton_9 = QtWidgets.QPushButton(Dialog)
        self.pushButton_9.setGeometry(QtCore.QRect(210, 290, 71, 71))
        self.pushButton_9.setStyleSheet("background-image: url(:/hole.png);")
        self.pushButton_9.setText("")
        self.pushButton_9.setObjectName("pushButton_9")
        self.pushButton_10 = QtWidgets.QPushButton(Dialog)
        self.pushButton_10.setGeometry(QtCore.QRect(340, 200, 56, 21))
        font = QtGui.QFont()
        font.setFamily("Arial")
        font.setPointSize(7)
        self.pushButton_10.setFont(font)
        self.pushButton_10.setObjectName("pushButton_10")
        self.pushButton_11 = QtWidgets.QPushButton(Dialog)
        self.pushButton_11.setGeometry(QtCore.QRect(340, 240, 56, 21))
        font = QtGui.QFont()
        font.setFamily("Arial")
        font.setPointSize(7)
        self.pushButton_11.setFont(font)
        self.pushButton_11.setObjectName("pushButton_11")
        self.label_2 = QtWidgets.QLabel(Dialog)
        self.label_2.setGeometry(QtCore.QRect(100, 60, 61, 31))
        font = QtGui.QFont()
        font.setFamily("华文彩云")
        font.setPointSize(12)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        self.label_2.setFont(font)
        self.label_2.setObjectName("label_2")
        self.pushButton = QtWidgets.QPushButton(Dialog)
        self.pushButton.setGeometry(QtCore.QRect(30, 110, 71, 71))
        self.pushButton.setStyleSheet("background-image: url(:/hole.png);")
        self.pushButton.setText("")
        self.pushButton.setObjectName("pushButton")
        self.label_3 = QtWidgets.QLabel(Dialog)
        self.label_3.setGeometry(QtCore.QRect(160, 70, 81, 21))
        self.label_3.setText("")
        self.label_3.setObjectName("label_3")
        self.label = QtWidgets.QLabel(Dialog)
        self.label.setGeometry(QtCore.QRect(110, 0, 409, 59))
        font = QtGui.QFont()
        font.setFamily("幼圆")
        font.setPointSize(22)
        self.label.setFont(font)
        self.label.setObjectName("label")

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

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
        self.pushButton_10.setText(_translate("Dialog", "开始游戏"))
        self.pushButton_11.setText(_translate("Dialog", "暂停游戏"))
        self.label_2.setText(_translate("Dialog", "得分:"))
        self.label.setText(_translate("Dialog", "灰太狼的挨打课"))

然后是我的主程序

from catchmouse import Ui_Dialog
from PyQt5.QtCore import QTimer
import time
import numpy as np
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
import sys

class MyWindow(QDialog, Ui_Dialog):
    def __init__(self, parent=None):
        super().__init__(parent)
        self. setupUi(self)
        #self.setMinimumSize(804,372)
        self.begin = False
        self.end = True
        self.score = 0
        #标记是否出现了小老鼠
        self.flag=np.zeros(10)
        self.timer = QTimer(self) #初始化一个定时器
        self.timer.timeout.connect(self.operate) #计时结束调用operate()方法
        self.push_dic={}
        self.push_dic[1]=self.pushButton
        self.push_dic[2]=self.pushButton_2
        self.push_dic[3]=self.pushButton_3
        self.push_dic[4]=self.pushButton_4
        self.push_dic[5]=self.pushButton_5
        self.push_dic[6]=self.pushButton_6
        self.push_dic[7]=self.pushButton_7
        self.push_dic[8]=self.pushButton_8
        self.push_dic[9]=self.pushButton_9
        self.pushButton_10.clicked.connect(self.game)
        self.pushButton_11.clicked.connect(self.gameover)
        self.label_3.setText(str(self.score))

        self.push_dic[1].clicked.connect(lambda:self.getscore(1))
        self.push_dic[2].clicked.connect(lambda:self.getscore(2))
        self.push_dic[3].clicked.connect(lambda:self.getscore(3))
        self.push_dic[4].clicked.connect(lambda:self.getscore(4))
        self.push_dic[5].clicked.connect(lambda:self.getscore(5))
        self.push_dic[6].clicked.connect(lambda:self.getscore(6))
        self.push_dic[7].clicked.connect(lambda:self.getscore(7))
        self.push_dic[8].clicked.connect(lambda:self.getscore(8))
        self.push_dic[9].clicked.connect(lambda:self.getscore(9))

        self.label.setStyleSheet("font:20pt '楷体';border-width: 1px;border-style: solid;border-color: rgb(255, 0, 0);")

        # 每过一秒发生的事情   
    def operate(self):
        #具体操作
        #print("计时结束")

        #地鼠全部藏起来
        for i in range(1,10):
            self.push_dic[i].setStyleSheet('QPushButton{background-image:url(hole.png)}')
        self.flag = np.zeros(10)
        a=np.random.randint(1,10)
        self.push_dic[a].setStyleSheet('QPushButton{background-image:url(mouse.png)}')
        self.flag[a]=1
        a=np.random.randint(1,10)
        self.push_dic[a].setStyleSheet('QPushButton{background-image:url(mouse.png)}')
        self.flag[a]=1
        a=np.random.randint(1,10)
        self.push_dic[a].setStyleSheet('QPushButton{background-image:url(mouse.png)}')
        self.flag[a]=1

    def game(self):
        if self.begin == False:
            self.end = False
            self.begin = True
            print("启动计时器")
            self.timer.start(800) #设置计时间隔并启动
            self.pushButton_10.setText("暂停")

        elif self.begin == True:
            self.begin = False
            self.timer.stop()
            self.pushButton_10.setText("继续")

    def gameover(self):
        if self.end == False:
            self.begin = False
            self.end == True
            self.pushButton_10.setText("开始游戏")
            self.flag = np.zeros(10)
            self.timer.stop()
            #地鼠全部藏起来
            for i in range(1,10):
                self.push_dic[i].setStyleSheet('QPushButton{background-image:url(hole.png)}')
            self.score = 0
            self.label.setText(str(self.score))

    def getscore(self,a):
        if self.flag[a] == 1 and self.begin == True:
            self.score += 1
            self.label.setText(str(self.score))
            self.flag[a] = 0
            self.push_dic[a].setStyleSheet('QPushButton{background-image:url(catch.png)}')
        
        

app = QApplication(sys.argv)
form = MyWindow()
form.show()
app.exec_()

同样,里面的.png文件要自己找
这篇堪称保姆教程了嘻嘻嘻

发布了26 篇原创文章 · 获赞 7 · 访问量 799

猜你喜欢

转载自blog.csdn.net/weixin_43820665/article/details/103559706
今日推荐