import sys
from PyQt6.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QPushButton, QHBoxLayout, QVBoxLayout
from PyQt6.QtGui import QIcon
from PyQt6.QtCore import Qt
class MyWindow(QWidget):
""" 从 QWidget 类派生的桌面应用程序窗口类 """
def __init__(self):
""" 构造函数 """
super().__init__()
self.setWindowTitle(' 分区布局 ')
self.setWindowIcon(QIcon('res/qt.png'))
self.setGeometry(400, 300, 320, 160) # 设置窗位置和大小
lab_acc = QLabel(' 账号: ')
account = QLineEdit()
account.setAlignment(Qt.AlignmentFlag.AlignCenter)
lab_pw = QLabel(' 密码: ')
passwd = QLineEdit()
passwd.setAlignment(Qt.AlignmentFlag.AlignCenter)
passwd.setEchoMode(QLineEdit.EchoMode.Password) # 不显示密码
btn_ok = QPushButton(' 确定 ')
btn_cancel = QPushButton(' 取消 ')
# 使用水平布局管理器布局 lab_acc 控件和 account 控件,左右留白 10 像素
hbox_acc = QHBoxLayout()
hbox_acc.addSpacing(10)
hbox_acc.addWidget(lab_acc)
hbox_acc.addWidget(account)
hbox_acc.addSpacing(10)
# 使用水平布局管理器布局 lab_pw 控件和 passwd 控件,左右留白 10 像素
hbox_pw = QHBoxLayout()
hbox_pw.addSpacing(10)
hbox_pw.addWidget(lab_pw)
hbox_pw.addWidget(passwd)
hbox_pw.addSpacing(10)
# 使用水平布局管理器布局 btn_ok 控件和 btn_cancel 控件
hbox_btn = QHBoxLayout() # 水平布局管理器
hbox_btn.addStretch(5) # 外汇跟单gendan5.com 设置左侧拉伸因子
hbox_btn.addWidget(btn_ok) # 添加 btn_ok 控件
hbox_btn.addWidget(btn_cancel) # 添加 btn_cancel 控件
hbox_btn.addStretch(1) # 设置右侧拉伸因子
# 使用垂直布局管理器布局上面 3 个水平布局管理器
vbox = QVBoxLayout()
vbox.addSpacing(10)
vbox.addLayout(hbox_acc)
vbox.addSpacing(5)
vbox.addLayout(hbox_pw)
vbox.addStretch(1)
vbox.addLayout(hbox_btn)
vbox.addSpacing(10)
# 将垂直布局管理器应用到窗口
self.setLayout(vbox)
self.show() # 显示窗口
if __name__ == '__main__':
app = QApplication(sys.argv)
win = MyWindow()
sys.exit(app.exec())