放一张今天的标题图,今天讲Qt Designer↓
然后是今天的作业,快乐打地鼠↓
-
先安装Qt Designer
打开cmd,输入pip3 install PyQt5-tools
然后就可以开始下载了,因为我已经下过了,现在是这样的
-
然后是在目录
…\Python36\Lib\site-packages\pyqt5-tools
中找到Qt Designer
其实我本来没找到这个目录后来我发现一个方法:可以从IDLE的地址进去↓
-
然后运行Qt Designer
-
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文件要自己找
这篇堪称保姆教程了嘻嘻嘻