(pyqt5)弹窗-Token验证

news2024/9/26 3:25:59

前言

        为了保护自己的工作成果,控制在合理的范围内使用,设计一个用于Token验证的弹窗.

  

代码

class TokenDialog(QDialog):
    def __init__(self, parent=None, login_user=None, mac_addr=None, func=None):
        super(TokenDialog, self).__init__(parent)
        self.login_user = login_user
        self.mac_addr = mac_addr

        self.func = func
        self.init_ui(parent)
        self.setWindowTitle("TOKEN验证窗口")
        self.setWindowFlags(Qt.FramelessWindowHint)  # 设置窗口无边框
        self.setFixedSize(400, 200)

    def init_ui(self, parent):
        '''水平布局'''
        self.msg_res = QLabel("")

        hbox = QHBoxLayout()
        self.save_btn = QPushButton()
        self.save_btn.setText('验证')
        self.save_btn.clicked.connect(lambda: self.save_btn_click())

        self.cancel_btn = QPushButton()
        self.cancel_btn.setText('取消')
        self.cancel_btn.clicked.connect(self.cancel_btn_click)

        hbox.addWidget(self.save_btn)
        hbox.addWidget(self.cancel_btn)

        fbox = QFormLayout()

        self.email_text = QLineEdit()
        self.email_text.setPlaceholderText("用户名")
        self.email_text.setText(self.login_user)

        self.mac_text = QLineEdit()
        self.mac_text.setPlaceholderText("mac地址")
        self.mac_text.setText(self.mac_addr)

        self.pw_text = QLineEdit()
        self.pw_text.setPlaceholderText("Token不能为空.")
        self.pw_text.setEchoMode(QLineEdit.Password)

        if os.path.exists(TOKEN_PATH):
            token_v = get_json_data(TOKEN_PATH)
            self.pw_text.setText(token_v)
        # self.pw_text.setText("OTA123456..")
        fbox.addRow(QLabel("用户名:"), self.email_text)
        fbox.addRow(QLabel('MAC:'), self.mac_text)
        fbox.addRow(QLabel('Token:'), self.pw_text)
        fbox.addRow(self.msg_res)

        vbox = QVBoxLayout()
        vbox.addLayout(fbox)

        vbox.addLayout(hbox)
        self.setLayout(vbox)

    def get_val(self):
        return {
            "user": self.email_text.text().strip(),
            "token": self.pw_text.text().strip()
        }

    def save_btn_click(self):
        ret_dict = self.get_val()
        if self.func and ret_dict["token"]:
            self.func(ret_dict["token"])

    def cancel_btn_click(self):
        self.close()


def get_add_dialog(parent=None, login_user=None, mac_addr=None, func=None):
    dialog = TokenDialog(parent, login_user, mac_addr, func)
    dialog.setFixedSize(400, 200)
    return dialog.exec()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    example = TokenDialog()
    example.show()
    sys.exit(app.exec_())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1914639.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024年网络监控软件排名|10大网络监控软件是哪些

网络安全,小到关系到企业的生死存亡,大到关系到国家的生死存亡。 因此网络安全刻不容缓,在这里推荐网络监控软件。 2024年这10款软件火爆监控市场。 1.安企神软件: 7天免费试用https://work.weixin.qq.com/ca/cawcde06a33907e6…

d3dcompiler_43.dll文件是什么?如何快速有效的解决d3dcompiler_43.dll文件丢失问题

dcompiler_43.dll 是一个Windows系统中的系统文件,属于DirectX软件的一部分。这个dcompiler_43.dll(动态链接库)文件主要用于处理与3D图形编程有关的任务,是运行许多游戏和高级图形程序必需的组件之一。那么如果电脑丢失d3dcompil…

新手如何配置运行yolov5环境

📚博客主页:knighthood2001 ✨公众号:认知up吧 (目前正在带领大家一起提升认知,感兴趣可以来围观一下) 🎃知识星球:【认知up吧|成长|副业】介绍 ❤️如遇文章付费,可先看…

部署Harbor仓库

本章内容: 安装docker-ce部署harbor仓库上传和拉取 1.安装docker 1)拉取源码 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 2)安装docker-ce yum -y install docker-ce 3&#…

Java 8革新:现代编程的全新标准与挑战

文章目录 一、方法引用二、接口默认方法三、接口静态方法四、集合遍历forEach()方法 一、方法引用 方法引用是Java 8中一种简化Lambda表达式的方式,通过直接引用现有方法来代替Lambda表达式。 方法引用使得代码更加简洁和易读,特别是在处理函数式接口时&…

数学建模国赛入门指南

文章目录 认识数学建模及国赛认识数学建模什么是数学建模?数学建模比赛 国赛参赛规则、评奖原则如何评省、国奖评奖规则如何才能获奖 国赛赛题分类及选题技巧国赛赛题特点赛题分类 国赛历年题型及优秀论文数学建模分工技巧数模必备软件数模资料文献数据收集资料收集…

NeRF++论文理解

今天想起这篇论文,于是将之前做得笔记复制过来以后方便查看

机器学习与深度学习:区别与联系(含工作站硬件推荐)

一、机器学习与深度学习区别 机器学习(ML:Machine Learning)与深度学习(DL:Deep Learning)是人工智能(AI)领域内两个重要但不同的技术。它们在定义、数据依赖性以及硬件依赖性等方面…

网页报错err_connection_timed_out 怎么办?教你快速修复错误代码

遇到网页错误提示“ERR_CONNECTION_TIMED_OUT”时,通常表示你的网络浏览器无法在规定时间内从服务器获取数据。这种错误不仅会阻碍你访问特定网站,而且可能会引起一些疑惑和不便。首先,这个问题可能是由于网络连接问题、服务器响应延迟或配置…

华为浏览器,Chrome的平替,插件无缝连接

文章目录 背景插件书签 背景 不知道各位小伙伴有没有这样的痛点,办公电脑、家里的电脑还有手机、平板等,收藏了一个网址或者在手机上浏览了某个网页,保存起来,可是一换平台或者换个电脑,在想要浏览之前收藏的东西&…

剪画小程序:父辈的照片模糊不清晰,怎么变清晰!

在我们的记忆深处,父辈和爷爷辈的影像总是伴随着一些模糊不清晰的老照片。这些照片或许没有现代摄影技术的高清与细腻,但它们却承载着无比厚重的岁月痕迹和情感温度。 每一张模糊的老照片,都是时光的切片。它们可能是父辈年轻时的纯真笑容&am…

Linux -- 认识 make/makefile

目录 前言: 什么是 make/makefile? 怎么使用 make/makefile? 依赖关系和依赖方法: 清理: 怎么使用 make? 如何编写多文件的 makefile? 什么是PHNOY? ACM时间 什么是AC…

maven项目读取文件错误

开发工具:idea 一个简单的maven项目,程序读取不到src/main/resources目录下的文件 寻找了一些原因后,还是没解决,最后灵机一动改了设置居然好了。 然后就解决了

LAZYNVIM学习使用笔记

文章目录 1. 前言VIM的模式快捷键参考 1. 前言 习惯使用vscode进行代码编辑,无意中刷到lazynvim,感觉功能强大,于是下载、安装,学习使用一下,本篇主要记录学习使用lazynvim的一些要点,防止遗忘。 持续更新…

视频版权音乐处理☞AI分离人声、音效、背景音乐的需求和进展-2024

随着互联网的普及和短视频的兴起,视频内容的全球各大平台分发越来越普遍。然而,不同国家和地区的音乐版权、不同社媒平台拥有的版权和处理政策都存在差异,因此同一个视频在多渠道分发的时候就会产生版权侵权风险。如何既能满足全球多渠道、多…

【大白话讲清楚:什么是 Langchain 及其核心概念】

文末有福利! 在AI和机器学习领域,每天都有新技术和框架涌现。今天,我们来聊聊最近引起广泛关注的一个框架 —— Langchain。 https://python.langchain.com/docs/get_started/introduction 那么,Langchain到底是什么&#xff0c…

【教程】Hexo 部署到 Github Page 后,自定义域名失效的问题

目录 前言&问题描述解决方案细节 前言&问题描述 近期给 Github Page 上托管的静态网站映射了自定义域名(aiproducthome.top),之后发现每次更新并部署 hexo 到 Github Page (hexo d)后就会出现自定义域名失效的…

Mybatis的优缺点及适用场景?

目录 一、什么是Mybatis? 二、Mybatis框架的特点 三、Mybatis框架的优点? 四、MyBatis 框架的缺点? 五、MyBatis 框架适用场合? 六、代码示例 1. 配置文件 mybatis-config.xml 2. 映射文件 UserMapper.xml 3. Java 代码…

数据结构--二叉树相关性质

1.性质 1.满二叉树每层节点个数:等比数列 3.(重要)任意二叉树:度为0(叶子节点)的比度为2的永远多一个。。度:就是看有多少孩子 如下图解析:(用推到归纳来分析&#xff…

CSS关于居中的问题

文章目录 1. 行内和块级元素自身相对父控件居中1.1. 块级元素相对父控件居中1.2. 行内元素相对于父控件居中 2. 实现单行文字垂直居中3. 子绝父相实现子元素的水平垂直居中3.1. 方案一3.1.1. 示例 3.2. 方案二3.2.1. 示例 3.3. 方案三(推荐)3.3.1. 示例 3.4. 方案四(了解一下) …