【PYQT】制作可以显示图片的抽卡模拟器

本文记录了如何使用PYQT制作赛马娘主题的抽卡模拟器,包括界面设计、数据读取、一抽与十连功能实现及错误处理。适合初学者学习Qt与Python结合的应用开发。
该文章已生成可运行项目,


更新

这个帖子是我刚学不久发的,做的非常粗糙,时间太久了,我也记不清怎么搞的了,考研复习重做一下放松一下(花了一下午)。我根据赛马娘Bwiki的模拟抽卡界面重新画了界面,功能也更符合正常的抽卡需求,至少我这帖子是没搞清需求。。。

这个帖子的内容没有什么参考性了,更完整版的代码我也上传了github,请移步【PYQT】赛马娘抽卡模拟器-基于Bwiki的抽卡模拟(上)查看更新后的内容。

Github源码:DrawCard_uma

前言

记录自己学习pyqt制作抽卡模拟器(简易)的过程。
抽卡规则基于赛马娘。
实现了一连抽和十连抽的功能,保底功能,十连抽必出sr功能,抽出ssr显示图片功能,
以及货币不足提示功能

一、前置操作

默认安装好了qt designer以及和python的环境配置:
需要安装的python包:
pyqt5
如若需要打包成exe文件(不推荐)
则需要安装pyinstaller包
本人是通过vscode编写py文件的,预先安装了插件:PYQT Integration,便于转换ui文件为py文件,以及快捷的打开qt designer编辑窗体。
不过,不使用vscode,通过控制台代码转换ui文件也是可行的。

二、操作步骤

1.qt绘制模拟器界面并转换为py文件

qt designer的基本使用方法可以参考这里:
https://www.cnblogs.com/linyfeng/p/11223707.html
个人简单绘画了一个界面
抽卡界面
注意需要对每个控件重命名,方便之后在程序中调用。(不改名无法调用,同时也不好分辨)
下面是我本人对控件的命名
其中涉及了用标签显示图片,有两个标签控件因为是空白未在上图显示
在这里插入图片描述

自定义界面后保存,得到一个ui后缀的文件
用vscode打开刚才保存位置的文件夹,右键文件“PYQT:Compile Form”转换为py文件。
在这里插入图片描述
如果转换出现问题,可以尝试在vscode里点击“文件->首选项->设置”,搜索pyqt,设置插件。
我的设置如下

第一个框为你的pyuic.5文件的位置,如果python不是用的anaconda则需要自己找到文件位置填入
第二个框“-x”表示转换后的py文件自带把窗体显示出来的函数,不用手动输入
第三个框默认为此
第四个框为你qt designer的位置,需要自己编辑

2.在项目文件夹加入数据文件

新建一个txt文件填入卡池内容
本人新建了一个data.txt文件,随便填写数据即可,本人设置了42行数据,对应代码中数组的大小。
在这里插入图片描述
注意要修改txt文本的编码为ANSI,否则读取会出问题。

同时放入抽出ssr卡需要显示的图片,并重命名方便在代码中调用。

3.新建一个py文件进行操作界面

新建一个py文件和ui转换后的py文件分开,可以方便修改方法和修改界面,不容易产生冲突。
如果需要修改界面,把修改后的ui文件再转换为py文件覆盖先前的即可。不会影响到操作函数。
新建文件命名为:“抽卡启动器”。
代码如下
添加信号和槽用函数连接刚才界面中创建的按钮“一抽”和“十连”

import sys
import random
#PyQt5中使用的基本控件
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtWidgets import QMessageBox
from PyQt5 import QtGui
#导入designer工具
from Ui_抽卡系统 import*
class MyMainForm(QMainWindow, Ui_Form):
   
    def __init__(self, parent=None):
        super(MyMainForm, self).__init__(parent)
        self.setupUi(self)
        #修饰界面
        self.setWindowTitle("抽卡模拟器")
        #添加信号和槽。      
        self.getone.clicked.connect(self.one)
        self.getten.clicked.connect(self.ten)

之后定义one和ten两个函数就可以用按钮实现定义的功能。
定义one函数,即“一抽”对应按钮的函数

def one(self):  
        name=self.textname.text() #读取用户名     
        a = self.textmoney.text() #读取货币数量
        if(name==""):
            QMessageBox.critical(self, "错误", "请输入用户名", QMessageBox.Yes | QMessageBox.Yes) #判断名字不为空
        elif
本文章已经生成可运行项目
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值