【PyQt】04-Designer

news2024/11/18 3:22:23

文章目录

  • 前言
  • 一、初级 Designer
    • 1.1 拖拽设计界面
    • 1.2 搞定之后记得保存ui文件
    • 1.3 载入代码
    • 1.4 运行结果
  • 二、登入界面
    • 代码
    • 效果展示
      • 账号密码错误时
      • 账号和密码正确
  • 总结


前言

自然还是跟着王铭东老师学的


一、初级 Designer

1.1 拖拽设计界面

在这里插入图片描述
进度条是这个
在这里插入图片描述

1.2 搞定之后记得保存ui文件

在这里插入图片描述

1.3 载入代码

'''
#Author :susocool
#Creattime:2024/1/31
#FileName:013-Qt Designer
#Description:
'''
import sys
from PyQt5.QtWidgets import QApplication
from PyQt5 import uic


if __name__ == "__main__" :
    app = QApplication(sys.argv)

    ui = uic.loadUi("hello.ui")

    ui.show()

    app.exec_()

此时,如果出现报错,在 ‘init.pyi’ 中找不到引用 ‘uic’在这里插入图片描述
可以直接忽视,对程序运行影响不大。
顺便一提,我每次在写Python程序的时候"main"总是忘记写下划线,真的很粗心。

1.4 运行结果

测试ui
调用成功

导入当前路径下的某个文件
./文件
在这里插入图片描述
一样可以实现效果

二、登入界面

在这里插入图片描述
预览
在这里插入图片描述
信号与槽编辑器
在这里插入图片描述
增加信号与槽

在这里插入图片描述
发送者选择
如何查看按键的名称
在这里插入图片描述
在这里插入图片描述
信号选择
在这里插入图片描述
在这里插入图片描述

代码

'''
#Author :susocool
#Creattime:2024/1/31
#FileName:013-Qt Designer
#Description:登入界面-1
'''

import sys
from PyQt5.QtCore import QTimer
from PyQt5.QtWidgets import *
from PyQt5 import uic

class MyWindow(QWidget):

    def __init__(self):
        super().__init__()
        self.init_ui()
        self.login_attempt = 6  # 登入尝试次数
        self.locked = False     # 是否锁定
        self.countdown = 10     # 解锁倒计时的秒数【设置成全局变量】

    def init_ui(self):
        self.ui = uic.loadUi("./login.ui")

        self.user_name_Qwidget = self.ui.lineEdit   # 用户输入框
        self.password_qwidget = self.ui.lineEdit_2    # 密码输入
        self.login_bnt = self.ui.pushButton    # 登入按键
        self.forget_password_bnt = self.ui.pushButton_2    # 忘记密码按钮
        self.textBrowser = self.ui.textBrowser    # 文本显示区域

        # 绑定信号与槽函数
        self.login_bnt.clicked.connect(self.login)

    def login(self):
        """登入按钮的槽函数"""
        if self.locked:
            # 如果处于锁定状态
            self.textBrowser.setText("登入已锁定,请稍等。。。")
            return

        user_name = self.user_name_Qwidget.text()
        password = self.password_qwidget.text()
        if user_name == "admin" and password == "123456":
            self.textBrowser.setText("欢迎%s"%user_name)
            self.textBrowser.repaint()
            self.login_attempt = 0 # 登入成功,重置次数
        else:
            self.login_attempt -= 1
            self.textBrowser.setText(f"用户名或者密码错误,请重新输入\n你还有{self.login_attempt}次机会")
            if self.login_attempt == 0:
                self.textBrowser.append("\n 登入已锁定,请稍等10s")
                self.locked = True

                self.countdown = 10  # 重置倒计时秒数
                self.countdown_timer = QTimer()     # 倒计时的计时器
                self.countdown_timer.timeout.connect(self.update_countdown)
                self.countdown_timer.start(1000)      # 每隔1秒触发一次

    def update_countdown(self):
        """重载倒计时函数"""
        if self.countdown > 0:
            self.textBrowser.append(f"请等待:{self.countdown}秒后解锁")
            self.countdown -= 1
        else:
            self.unlock()

    def unlock(self):
        """解锁函数"""
        self.locked = False
        self.textBrowser.append("\n 解锁完成,请重新输入")
        self.user_name_Qwidget.clear()
        self.password_qwidget.clear()
        self.countdown_timer.stop()          # 停止倒计时计时器

if __name__ == '__main__':
    app = QApplication(sys.argv)

    w = MyWindow()
    # 展示窗口
    w.ui.show()

    app.exec()

效果展示

账号密码错误时

设置有6次输入机会,如果账号或者密码错误会显示输入错误,当输入错误到达6次,会进入锁定状态,倒计时10s后才允许继续用户输入。
在这里插入图片描述
在这里插入图片描述
倒计时啦~
在这里插入图片描述
在这里插入图片描述

账号和密码正确

在这里插入图片描述


总结

  • 这篇博文记录了结合QTdesigner和PyQt设计一个界面。

  • 双击文本编辑的控件可以修改内容

  • 最开始修改代码的时候,self.countdown设置成局部变量,导致倒计时的时候总是莫名其妙,需要改成全局变量才是达到预期,更直接地控制倒计时的逻辑,使得代码结构更加清晰。

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

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

相关文章

布局技巧及CSS初始化

一,margin负值巧妙应用 二,文字围绕浮动元素 三,行内块 四,CSS三角强化 五,CSS初始化 一,margin负值巧妙应用 制作盒子的细线边框: 鼠标经过li后变色: 二,文字围绕…

3D 转换

1,3D的特点: 近小远大 物体后面遮挡不可见 2,3D移动 translate3d 3D移动在2D移动的基础上多加了一个可以移动的方向,就是z轴方向 transform:translateX(100px):仅仅是在x轴上移动…

Redis冲冲冲——缓存三兄弟:缓存击穿、穿透、雪崩

目录 引出缓存击穿缓存穿透缓存雪崩 总结 引出 谈谈redis的击穿、穿透、雪崩。 缓存击穿 缓存击穿:redis中没有,但是数据库有 顺序:先查缓存,判断缓存是否存在;如果缓存存在,直接返回数据;如果…

考研高数(共轭根式)

1.定义 共轭根式:是指两个不等于零的根式A、B,若它们的积AB不含根式,则称A、B互为共轭根式。 共轭根式的一个显著特点是通过相乘能把根号去掉,这是很有帮助的 2.常用的共轭根式 3.例题 1)求极限 2)证明…

第九节HarmonyOS 常用基础组件21-ImageAnimator

1、描述 提供帧动画组件来实现逐帧播放图片的能力&#xff0c;可以配置需要播放的图片列表&#xff0c;每张图片可以配置时长。 2、接口 ImageAnimator() 3、属性 参数名 参数类型 描述 images Array<ImageFrameInfo> 设置图片帧信息集合&#xff0c;每一帧的帧…

#pycharm|插件#pycharm提高生产力的工具,自用顺手,推荐一波

aiXcoder Code Completer aiXcoder 结合上下文为用户生成完整且更符合实际场景的代码行或者代码块&#xff0c;同时提供生成代码、自动生成单元测试、Bug自动修复、代码解释、生成注释等功能。 CodeGeeX 代码极X CodeGeeX是一款基于LLMs的强大智能编程助手。提供代码生成/补全…

bluecms 代码审计

一 环境准备 BlueCMS v1.6 sp1 phpstudy php5.6.9apachemysql 二 环境搭建 phpstudy 1.把下好的BlueCMS源码文件bluecms_src放到phpStudy的WWW目录下 2.访问本地&#xff1a;http://localhost/bluecms_src/&#xff0c; 能看到项目文件 3.访问地址&#xff1a;http://loca…

解决:ModuleNotFoundError: No module named ‘tiktoken’

解决&#xff1a;ModuleNotFoundError: No module named ‘tiktoken’ 文章目录 解决&#xff1a;ModuleNotFoundError: No module named tiktoken背景报错问题报错翻译报错位置代码报错原因解决方法方法一&#xff0c;直接安装方法二&#xff0c;手动下载安装方法三&#xff0…

C++进阶(八)红黑树

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、红黑树的概念二、红黑树的性质三、红黑树结构四、红黑树的插入操作1、情况一2、情况二3、…

Windows 10中哪些文件或文件夹可以删除,哪些不可以?看了这篇就大彻大悟了

在清理计算机上的存储空间后,我们经常深入研究几个系统生成的文件,除了包含我们数据的常规文件和文件夹。如果你甚至错误地删除了文档、视频、音频文件或图像,你仍然可以恢复它。而且,它不会对你的操作系统产生任何影响。 然而,如果你不小心删除了一个错误的系统相关文件…

【RuoYi-Vue-Plus学习】项目初始化时将sql导入数据库出现Finished with error解决方法之一

将sql导入数据库出现Finished with error&#xff0c;文末是最终解决方法。 问题描述&#xff1a;sql导入出现Finished with error 解决方法探索过程&#xff1a; 1&#xff09;参考链接2和3&#xff0c;在mysql的bin目录下输入以下指令连接数据库 mysql -h localhost -u ro…

2024西湖论剑misc方向wp

每年的misc都是最无聊坐牢的 数据安全-easy_tables import pandas as pd import hashlib from datetime import datetimeusers_df pd.read_csv(users.csv) permissions_df pd.read_csv(permissions.csv) tables_df pd.read_csv(tables.csv) actionlog_df pd.read_csv(acti…

一段比较简单的人工智能自动做模型的程序

一段比较简单的人工智能自动做模型的程序 一、人工智能自动做模型的程序通常包括以下几个步骤&#xff1a;二、人工智能自动做模型的程序示例&#xff1a;三、这只是一个简单的示例&#xff0c;实际应用中可能需要更复杂的数据预处理、特征工程、模型调参等步骤。但这个示例程序…

智能指针——浅析

智能指针 本人不才&#xff0c;只能将智能指针介绍一下&#xff0c;无法结合线程进行深入探索 介绍及作用 在异常产生进行跳转时&#xff0c;通过栈帧回收进行内存释放&#xff0c;防止内存泄漏 基于RAII思想可以创建出只能指针 RAII(Resource Acquisition Is Initializatio…

HTML标签 - 1

文章目录 HTML标签简介HTML书写规范常见网页制作软件常用标签结构标签排版标签标题标签容器标签字体标签文本格式化标签列表标签图片标签 HTML标签 简介 一门使用标记标签来描述网页&#xff0c;展示信息给用户的语言。 超文本标记语言&#xff08;Hyper Text Markup Langua…

力扣hot100 数据流的中位数 大小根堆

Problem: 295. 数据流的中位数 文章目录 思路复杂度&#x1f496; Code 思路 &#x1f468;‍&#x1f3eb; 参考 大根堆维护较小值&#xff08;堆顶即中位数&#xff09;&#xff0c;小根堆维护较大值&#xff08;堆顶可能是中位数之一&#xff09;维护小堆长度较长&#x…

响应式Web开发项目教程(HTML5+CSS3+Bootstrap)第2版 例5-6 绘制几何图形

代码 <!doctype html> <html> <head> <meta charset"utf-8"> <title>绘制几何图形</title> </head><body><canvas id"canvas" width"250" height"150" style"border: 1px b…

【数据结构 01】栈

一、原理 栈通常从数据结构和内存空间两个角度解释&#xff0c;从数据结构的角度&#xff0c;栈是一种线性结构表&#xff0c;只允许在固定的一端进行插入和删除元素&#xff0c;从内存空间角度&#xff0c;操作系统为函数和变量分配的内存空间通常在栈区&#xff0c;但是无论…

【AI绘画】stable diffusion原理解读,通俗易懂,直接喂到你嘴里!!!

手把手教你入门绘图超强的AI绘画&#xff0c;用户只需要输入一段图片的文字描述&#xff0c;即可生成精美的绘画。给大家带来了全新保姆级教程资料包 &#xff08;文末可获取&#xff09; 文章目录 一、前言&#xff08;可跳过&#xff09;二、stable diffusion 1.clip2.diffus…

设计模式之框架源码剖析(实战+图解)

Java设计模式 1&#xff0c;概述 随着软件开发人员人数的增多&#xff0c;一些公司急需一些高端人才。作为一个高端人才&#xff0c;设计面向对象软件是必不可少的能力&#xff0c;而软件设计是需要很深的功力&#xff0c;设计模式就要求你必须掌握。 2&#xff0c;本章特色…