(pyqt5)弹窗-Token验证

前言

        为了保护自己的工作成果,控制在合理的范围内使用,设计一个用于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_())

相关推荐

  1. Ratchet websocket token 验证

    2024-07-10 18:56:04       39 阅读
  2. 小程序

    2024-07-10 18:56:04       63 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 18:56:04       99 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 18:56:04       107 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 18:56:04       90 阅读
  4. Python语言-面向对象

    2024-07-10 18:56:04       98 阅读

热门阅读

  1. 维度建模——维度建模概述

    2024-07-10 18:56:04       29 阅读
  2. 两段序列帧动画播放,在ios机型上出现闪屏

    2024-07-10 18:56:04       27 阅读
  3. GPT-5或重塑我们的工作与生活

    2024-07-10 18:56:04       27 阅读
  4. Soul App Android一二三面凉经(2024)

    2024-07-10 18:56:04       25 阅读
  5. leetcode-动态规划-01背包

    2024-07-10 18:56:04       29 阅读
  6. 软件开发面试题C#,.NET知识点(续)

    2024-07-10 18:56:04       25 阅读
  7. git命令获取当前分支远端分支名

    2024-07-10 18:56:04       28 阅读
  8. oracle查询出表中某几个字段值不唯一的数据

    2024-07-10 18:56:04       28 阅读
  9. Git 常用命令

    2024-07-10 18:56:04       23 阅读
  10. C#规则引擎

    2024-07-10 18:56:04       23 阅读
  11. 深度学习Day-24:ResNeXt-50算法思考

    2024-07-10 18:56:04       27 阅读
  12. 完全背包求具体方案(c++题解)

    2024-07-10 18:56:04       28 阅读