使用pyqt创建一个登录界面
from PyQt6.QtCore import Qt
# 引入pyqt6包
from PyQt6.QtGui import QIcon, QMovie
from PyQt6.QtWidgets import QApplication, QWidget, QPushButton, QLabel, QLineEdit
import sys
class MyWidget(QWidget):
# 构造函数,继承父类的构造函数
def __init__(self):
super().__init__()
# 用标签设置背景
mv = QMovie("D:\\xn\\1.gif")
# 绑定标签与窗口
lab1 = QLabel(self)
# 设置标签的大小为窗口大小,作为背景
lab1.resize(960,540)
# 将动图填充并启动动图
lab1.setMovie(mv)
mv.start()
# 自适应标签大小
lab1.setScaledContents(True)
# 设置界面大小
self.resize(960,540)
# 输入标题
self.setWindowTitle("登录界面")
# 上传窗口图标
self.setWindowIcon(QIcon("D:\\xn\pictrue\\pictrue\\pictrue\\shuiGuo.png"))
# self.setStyleSheet("background-color:black")
# self.setWindowFlag(Qt.WindowType.FramelessWindowHint)
#设置按钮
batn1 = QPushButton("登录",self)
# 设置大小
batn1.resize(100,40)
# 设置位置
batn1.move(200,400)
# 更改按钮字体颜色,背景颜色,消角
batn1.setStyleSheet("background-color:rgb(0, 153, 255);border-radius:5px;color:white")
# 设置按钮为可以使用
batn1.setEnabled(True)
# rgb(0, 153, 255)
# 设置行编辑器
edit1 = QLineEdit(self)
# 设置行编译器大小及位置
edit1.resize(200,30)
edit1.move(150,200)
# 消角
edit1.setStyleSheet(";border-radius:5px")
# background-color : transparent
# 抢占给出提示
edit1.setPlaceholderText("手机号/QQ号码/邮箱")
# 设定标题 绑定窗口
lab2 = QLabel("Logn In",self)
# 设定标签大小及位置
lab2.resize(200,30)
lab2.move(200,150)
# 设置标签字体颜色
lab2.setStyleSheet("color:white")
# 第二个行编辑器输入密码
edit2 = QLineEdit(self)
edit2.resize(200, 30)
edit2.move(150, 250)
edit2.setStyleSheet(";border-radius:5px")
edit2.setPlaceholderText("密码")
# 回显模式设为密码回显模式
edit2.setEchoMode(QLineEdit.EchoMode.PasswordEchoOnEdit)
if __name__ == "__main__":
# 一个应用程序只有一个
app = QApplication(sys.argv)
# 创建实例对象
myWidget = MyWidget()
# 窗口默认不显示,这里显示窗口
myWidget.show()
sys.exit(app.exec())
一、PyQt6程序入门实例
1】QApplication 类专门为QGuiApliaction类提供QWidget的应用程序所需要的一些功能,它可以处理小部件的特定初始化和结束。
2】QWidget类是所有Qt Gui界面类的基类
#将QT的应用程序类 窗口类导入进来
from PyQt6.QtWidgets import QApplication,QWidget
#sys是Python自带的模块 主要用来处理Python环境和运行一些功能的
import sys
#封装一个我的窗口类 继承于QWidget类
class MyWidget(QWidget):
#显性定义出构造函数
def __init__(self):
#调用父类的初始化方法 完成父类的初始化
super().__init__()
if __name__ == "__main__":
#用应用程序类实例化一个应用程序对象
app = QApplication(sys.argv) #一个程序中 有且仅有一个应用程序对象
#用我的窗口类 实例化一个我的窗口
myWidget = MyWidget()
#显示我的窗口 窗口默认不显示 需要调用show函数
myWidget.show()
#让应用程序进入 阻塞状态 消息循环
sys.exit(app.exec())
二、求出当前窗口的大小
#求出当前窗口的大小
print(myWidget.size()) #宽 高
print(myWidget.size().width()) #宽
print(myWidget.size().height()) #高
print(myWidget.width()) #宽
print(myWidget.height()) #高
print(myWidget.geometry().width()) #宽
print(myWidget.geometry().height()) #高
三、窗口的尺寸、标题、背景颜色等相关设置
from PyQt6.QtWidgets import QApplication,QWidget
from PyQt6.QtGui import QIcon
from PyQt6.QtCore import Qt
import sys
#封装一个我的窗口类
class MyWidget(QWidget):
#构造函数
def __init__(self):
#初始化父类
super().__init__()
#设置窗口标题
self.setWindowTitle("我的窗口")
#设置窗口图标
self.setWindowIcon(QIcon("C:\\Users\\admin\\Desktop\\recent\\pictrue\\pictrue\\qq.png"))
#self.setWindowIcon(QIcon("C:/Users/admin/Desktop/recent/pictrue/pictrue/qq.png"))
#设置背景颜色
#self.setStyleSheet("background-color:green")
self.setStyleSheet("background-color:rgb(64,143,168)")
#重新设置大小
self.resize(540,400)
#固定窗口大小
self.setFixedSize(540,400)
#设置纯净窗口 去掉头部
self.setWindowFlag(Qt.WindowType.FramelessWindowHint)
if __name__ == "__main__":
app = QApplication(sys.argv)
myWidget = MyWidget() #实例化对象时 自动调用构造函数
#显示
myWidget.show()
sys.exit(app.exec())
五、常用类(组件)的使用
5.1 按钮类 QPushButton
import sys
from PyQt6.QtGui import QIcon
from PyQt6.QtWidgets import QApplication, QWidget, QPushButton
#封装我的窗口类
class MyWidget(QWidget):
#构造函数
def __init__(self):
#初始化父类
super().__init__()
self.resize(600,400)
#创建第一个按钮
btn1 = QPushButton() #无参构造
#btn1.show(),只会让组件独立显示
#如果想让组件依赖于窗口显示 则需要给组件设置父组件(父对象)
btn1.setParent(self)
#设置文本
btn1.setText("第一个按钮")
#设置背景颜色
btn1.setStyleSheet("background-color:green")
#创建第二个按钮
btn2 = QPushButton("第二个按钮",self)
#移动
btn2.move(100,200)
#设置图标
btn2.setIcon(QIcon("C:\\Users\\admin\\Desktop\\recent\\pictrue\\pictrue\\qq.png"))
#创建第三个按钮
btn3 = QPushButton(QIcon("C:\\Users\\admin\\Desktop\\recent\\pictrue\\pictrue\\qq.png"),"第三个按钮",self)
btn3.move(200,150)
btn3.resize(140,200)
#设置按钮是否可用
btn3.setEnabled(False) #不可用
if __name__ == "__main__":
app = QApplication(sys.argv)
myWidget = MyWidget()
myWidget.show()
sys.exit(app.exec())
5.2 行编辑器类 QLineEdit
import sys
from PyQt6.QtGui import QIcon
from PyQt6.QtWidgets import QApplication, QWidget, QLineEdit
#封装我的窗口类
class MyWidget(QWidget):
#构造函数
def __init__(self):
#初始化父类
super().__init__()
self.resize(600,400)
#创建第一个行编辑器
edit1 = QLineEdit()
edit1.setParent(self)
edit1.resize(200,50)
#创建第二个行编辑器
edit2 = QLineEdit(self)
edit2.move(300,200)
#回显模式的设置
edit2.setEchoMode(QLineEdit.EchoMode.Password)
#创建第三个行编辑器
edit3 = QLineEdit("张三",self) #默认文本
edit3.move(400,300)
#创建第四个行编辑器
edit4 = QLineEdit(self)
edit4.move(500,400)
#设置占位
edit4.setPlaceholderText("手机号/QQ号码/邮箱")
if __name__ == "__main__":
app = QApplication(sys.argv)
myWidget = MyWidget()
myWidget.show()
sys.exit(app.exec())
5.3 标签类 QLabel
一般用来显示文本或者图片的
import sys
from PyQt6.QtGui import QIcon, QPixmap, QMovie
from PyQt6.QtWidgets import QApplication, QWidget, QLabel, QPushButton
#封装我的窗口类
class MyWidget(QWidget):
#构造函数
def __init__(self):
#初始化父类
super().__init__()
self.resize(600,400)
#创建第一个标签
lab1 = QLabel()
lab1.setParent(self)
lab1.resize(100,100)
lab1.move(300,300)
lab1.setStyleSheet("background-color:green")
# 创建第二个标签
lab2 = QLabel("我是一个标签",self)
lab2.resize(100, 100)
lab2.move(500, 300)
# 创建第三个标签
lab3 = QLabel(self)
lab3.resize(300, 100)
lab3.move(200, 200)
#设置图片
lab3.setPixmap(QPixmap("C:\\Users\\admin\\Desktop\\recent\\pictrue\\pictrue\\logo.png"))
#设置自动适应
lab3.setScaledContents(True)
#创建第四个标签
lab4 = QLabel(self)
lab4.resize(600,200)
lab4.setStyleSheet("background-color:green")
#实例化一个动图对象 动图类 QMovie
mv = QMovie("C:\\Users\\admin\\Desktop\\recent\\pictrue\\pictrue\\zz.gif")
#将动图设置到标签中
lab4.setMovie(mv)
#让动图动起来
mv.start()
#自动适应
lab4.setScaledContents(True)
#按钮类
btn1 = QPushButton("登录",self)
btn1.move(100,500)
btn1.resize(80,30)
btn1.setStyleSheet("background-color:green;border-radius:3px;color:white")
if __name__ == "__main__":
app = QApplication(sys.argv)
myWidget = MyWidget()
myWidget.show()
sys.exit(app.exec())