(2) 使用Qt Designer设计并实现第一个页面 - 登陆

目录

一、 使用 Qt Designer 设计登录界面

1、新建 登录窗口 Main Window 

 2、创建 用户名和密码标识

 3、创建 用户名和密码 输入框

4、 创建 登录 和 取消 按钮

二、 将Qt Designer设计的.ui界面编译为.py文件

1、使用pyuic5命令编译

2、编译后的文件目录

三、创建 db.py 连接数据库

1、连接数据库

2、查询数据库

 四、创建 main.py 整合界面,数据库,事件等

1、创建login窗口

2、绑定登录按钮到处理函数

3、处理函数实现逻辑判断

五、使用 pyinstaller 打包为 exe 可执行文件

六、运行效果展示

七、源码下载


一、 使用 Qt Designer 设计登录界面

1、新建 登录窗口 Main Window 

这个Main Window 作为登陆界面使用。

 2、创建 用户名和密码标识

用户名和密码标识均属于Display Widgets 之 Label 。

 3、创建 用户名和密码 输入框

用户输入的用户名和密码均属于 Input Widgets 之 Line Edit 输入框 单行输入框。并在右侧 QObject之Object Name属性修改该对象的唯一名称属性

 其中,密码需要隐藏显示,所以需要设置 QLineEdit 的 echoMode属性为 Password,该属性默认为 normal。

4、 创建 登录 和 取消 按钮

使用 Buttons 之 Push Button 按钮实现该功能 。

5、将该界面保存为login.ui文件

二、 将Qt Designer设计的.ui界面编译为.py文件

1、使用pyuic5命令编译

pyuic5 -o login.py login.ui
pyuic5 -o app.py app.ui

2、编译后的文件目录

三、创建 db.py 连接数据库

数据库使用 python records ,前面有专门文章介绍,这里不做讲解直接使用。

1、连接数据库

import records
from sqlalchemy.sql.elements import True_

# 连接数据库
db = records.Database(
    'mysql://root:123456@127.0.0.1:3306/pyqtDemo')

2、查询数据库

def has_user(account, passwd):
    data = []
    # 读取数据库
    sql = "select * from user where account='%s' and passwd='%s' " % (account, passwd)
    print(sql)
    rows = db.query(sql)
    return rows.first()

 四、创建 main.py 整合界面,数据库,事件等

1、创建login窗口

if __name__ == '__main__':

    QApp = QApplication(sys.argv)
    windowLogin = QMainWindow()
    uiLogin = login.Ui_MainWindow()
    uiLogin.setupUi(windowLogin)
    windowLogin.show()

2、绑定登录按钮到处理函数

 uiLogin.pushButtonLogin.clicked.connect(pushButtonLogin_click)

3、处理函数实现逻辑判断

将用户名和密码做有效性判断,并判断是否为数据库中有效账号,如果为真,登录到主界面,否则错误提示。

def pushButtonLogin_click():
    # 判断用户名密码
    username = uiLogin.lineEditUsername.text()
    password = uiLogin.lineEditPassword.text()

    if len(username) and len(password) and db.has_user(username, password):
        windowApp.show()
        windowLogin.close()
    else:
        QMessageBox.warning(windowLogin,
                            "警告",
                            "用户名或密码错误!",
                            QMessageBox.Yes)

五、使用 pyinstaller 打包为 exe 可执行文件

pyinstaller -F -w main.py

六、运行效果展示

七、源码下载

https://download.csdn.net/download/lildkdkdkjf/64553923

  • 20
    点赞
  • 131
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 在Qt实现两个页面之间的切换可以使用QStackedWidget控件和信号与槽机制。 首先,在Qt Designer中创建两个页面的界面,在QWidget或QDialog上进行设计。然后,将这两个页面界面放置在QStackedWidget控件中,将其设置为主窗口的中心布局。 接下来,在代码中定义一个QStackedWidget对象,并在主窗口的构造函数中初始化它。将两个页面添加到QStackedWidget控件中,可以使用addWidget()函数。 然后,通过添加按钮或其他交互元素,在主窗口中创建一个信号槽连接。在槽函数中,使用setCurrentIndex()函数设置QStackedWidget中当前显示的页面的索引值。 当触发按钮或交互元素的点击事件时,发送一个信号,将其与槽函数连接。在槽函数中,通过setCurrentIndex()函数将QStackedWidget中显示的页面切换到需要显示的页面。 总结起来,通过使用QStackedWidget控件和信号与槽机制,可以实现两个页面之间的切换。 ### 回答2: 要在Qt实现两个页面的来回切换,可以使用QStackedWidget控件。QStackedWidget是一个堆叠的小部件,可以在其上添加多个页面,并且只显示其中一个页面。 首先,需要创建两个QWidget页面,例如Page1和Page2。 ```c++ // 创建页面1 QWidget *page1 = new QWidget; // 创建页面2 QWidget *page2 = new QWidget; ``` 然后,将创建的页面添加到QStackedWidget中。 ```c++ QStackedWidget *stackedWidget = new QStackedWidget; stackedWidget->addWidget(page1); stackedWidget->addWidget(page2); ``` 要在页面之间进行切换,可以使用setCurrentIndex函数,通过设置页面的索引来显示不同的页面。索引从0开始,表示第一个页面。 ```c++ // 显示页面2 stackedWidget->setCurrentIndex(1); ``` 为了实现来回切换页面,可以在需要的地方调用setCurrentIndex函数来切换页面。例如,可以在按钮的点击事件中切换页面。 ```c++ connect(button1, &QPushButton::clicked, [=](){ // 切换到页面2 stackedWidget->setCurrentIndex(1); }); connect(button2, &QPushButton::clicked, [=](){ // 切换到页面1 stackedWidget->setCurrentIndex(0); }); ``` 通过这样的方式,就可以在Qt实现两个页面的来回切换了。其中,QStackedWidget控件可以方便地管理多个页面,并在需要时进行切换显示。 ### 回答3: 在Qt实现两个页面的来回切换可以使用以下方法: 1. 使用堆栈管理页面:创建一个QStackedWidget的实例来管理页面,将要切换的页面添加到堆栈中,并设置当前页面索引。可以使用信号和槽机制来触发页面切换事件,例如点击按钮切换页面。通过设置当前页面索引,可以在页面之间来回切换。 2. 使用Tab页:创建一个QTabWidget的实例来管理页面,将不同的页面添加到Tab页中。可以在Tab页上添加标签或者按钮,通过用户点击标签或者按钮来切换到不同的页面。通过设置当前活动标签页,可以在不同页面之间实现来回切换。 3. 使用StackedLayout:创建一个QStackedLayout的实例来管理页面,将要切换的页面添加到布局中。通过切换布局中的当前索引,可以实现页面之间的切换。可以使用按钮或者其他交互控件来触发页面切换事件。 以上是几种常见的在Qt实现页面来回切换的方法,可以根据具体的需求选择合适的方法来实现页面切换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YYDataV软件开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值