PyQt框架简介
PyQt是一套Python的GUI开发框架
GUI
GUI是Graphical User Interface的英文简称,即图形用户界面. 是指采用图形方式显示的计算机操作用户界面.
在Python中经常使用的GUI控件集有PyQt、Tkinter、wxPython、Kivy、PyGUI和Libavg,其中PyQt是Qt(c++语言实现的)为Python专门提供的GUI扩展
Qt
Qt 是一个1991年由Qt Company开发的跨平台C++图形用户界面开发框架。
2008年,Qt Company被诺基亚公司收购,Qt也因此成为诺基亚旗下的编程语言工具。
2012年,Qt被Digia收购。 2
014年4月,跨平台集成开发环境Qt Creator 3.1.0正式发布
PyQt
PyQt是一个用于创建GUI应用程序的跨平台的工具包,它将Python编程语言和Qt库成功融合在一起.
可以运行在所有主流的操作系统上.包括windows、unix以及macos PyQt拥有620多个类,将近6000个函数
PyQt版本的区别
PyQt有PyQt3、PyQt4以及PyQt5版本. 现在一般用的就是、PyQt4和、PyQt5 Qt4 Qt5(最常用)
PyQt5相比PyQt4的区别:(python:不向下兼容)
1. 不支持python2.6之前的版本
2. PyQt5 不支持任何在PyQt4版本中标记为不推荐或舍弃的Qt API
PyQt的特性
基础高性能的Qt的GUI控件集
能够跨平台运行在windows、linux和macos等系统上
使用信号/槽(signal/slot)机制进行通信(其它语言采用回调方式)
对Qt库的完全封装
可以使用Qt成熟的IDE(Qt Designer)进行图形界面设计,并自动生成可执行的Python代码
提供了一整套种类繁多的窗口控件
PyQt官网
Riverbank Computing | Introduction
PyQt的安装方式
1. 到官网下载PyQt5的最新源码进行编译安装
2. 使用pip install进行在线安装
pip
pip 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能。
目前如果你在 python.org 下载最新版本的安装包,则是已经自带了该工具。
Python 2.7.9 + 或 Python 3.4+ 以上版本都自带 pip 工具
通过pip install安装PyQt5
第一步:配置国内镜像 直接在user目录中创建一个pip目录,如:C:\Users\xx\pip,新建文件pip.ini.内容如下:
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=mirrors.aliyun.com
timeout = 150
通过pip install安装PyQt5
第二步:使用下面命令安装PyQt5
第三步:安装常用的Qt工具
第四步:把PyQt-tools的安装目录添加到系统环境变量中
测试PyQt环境
1.进入cmd命令
2. 进入python交互式命令行
3. 在交互式命令下执行下面代码
4. 如果执行成功就说明环境搭建完成
查看PyQt版本:
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
import sys
# 1.创建应用程序
app = QApplication(sys.argv)
# 2.创建窗口
w = QWidget()
# 3.显示窗口
w.show()
# 4.等待窗口停止
sys.exit(app.exec())
窗口处理:
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import QIcon
import sys
# 1.创建应用程序
app = QApplication(sys.argv)
# 2.创建窗口
w = QWidget()
# 修改窗口标题
w.setWindowTitle('黑马窗口')
icon = QIcon('qq.png')
# 修改图标
w.setWindowIcon(icon)
"""------------------ 移动窗口到中心位置 ------------------"""
# 屏幕的宽度和高度
geometry = QDesktopWidget().screenGeometry()
screenWidth = geometry.width()
screenHeight = geometry.height()
# 窗口的宽度和高度
geometry = w.geometry()
windowWidth = geometry.width()
windowHeight = geometry.height()
# x = (屏幕宽度-窗口宽度)/2
x = (screenWidth-windowWidth)/2
# y = (屏幕高度-窗口高度)/2
y = (screenHeight-windowHeight)/2
# 移动窗口到x和y坐标
w.move(x+600,y)
# 3.显示窗口
w.show()
# 4.等待窗口停止
sys.exit(app.exec())
气泡提示:
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import QIcon
import sys
# 1.创建应用程序
app = QApplication(sys.argv)
# 2.创建窗口
w = QWidget()
# 修改窗口标题
w.setWindowTitle('气泡提示窗口')
"""------------------ 气泡提示 ------------------"""
w.setToolTip('这个一个气泡提示的窗口')
# 3.显示窗口
w.show()
# 4.等待窗口停止
sys.exit(app.exec())
文本展示:
from PyQt5.QtWidgets import QWidget,QApplication,QLabel
from PyQt5.QtCore import *
from PyQt5.QtGui import QIcon
import sys
# 1.创建应用程序
app = QApplication(sys.argv)
# 2.创建窗口
w = QWidget()
# 修改窗口标题
w.setWindowTitle('文本展示')
"""------------------ 展示文本 ------------------"""
label = QLabel()
label.setText('第一个文本')
# 将文本控件添加到窗口中
label.setParent(w)
# 3.显示窗口
w.show()
# 4.等待窗口停止
sys.exit(app.exec())
图片展示:
from PyQt5.QtWidgets import QWidget,QApplication,QLabel
from PyQt5.QtCore import *
from PyQt5.QtGui import QIcon,QPixmap
import sys
# 1.创建应用程序
app = QApplication(sys.argv)
# 2.创建窗口
w = QWidget()
# 修改窗口标题
w.setWindowTitle('图片展示')
"""------------------ 展示图片 ------------------"""
label = QLabel()
pixmap = QPixmap('i.jpg')
label.setPixmap(pixmap)
# 显示到窗口中
label.setParent(w)
# 改变窗口大小
w.resize(pixmap.width(),pixmap.height())
# 3.显示窗口
w.show()
# 4.等待窗口停止
sys.exit(app.exec())
动画展示:
from PyQt5.QtWidgets import QWidget,QApplication,QLabel
from PyQt5.QtCore import *
from PyQt5.QtGui import QIcon,QMovie
import sys
# 1.创建应用程序
app = QApplication(sys.argv)
# 2.创建窗口
w = QWidget()
# 修改窗口标题
w.setWindowTitle('图片展示')
"""------------------ 展示图片 ------------------"""
label = QLabel()
movie = QMovie('b.gif')
label.setMovie(movie)
# 展示到窗口中
label.setParent(w)
# 动画开启播放
movie.start()
# 3.显示窗口
w.show()
# 4.等待窗口停止
sys.exit(app.exec())
单行输入QLineEdit:
from PyQt5.QtWidgets import QApplication,QWidget,QLineEdit
from PyQt5.QtCore import *
from PyQt5.QtGui import QIcon
import sys
# 1.创建应用程序
app = QApplication(sys.argv)
# 2.创建窗口
w = QWidget()
# 修改窗口标题
w.setWindowTitle('单行输入框')
"""------------------ 展示单行输入框 ------------------"""
edit = QLineEdit()
# setEchoMde
# 默认模式
# edit.setEchoMode(QLineEdit.Normal)
# edit.setEchoMode(QLineEdit.NoEcho)
# edit.setEchoMode(QLineEdit.Password)
# edit.setEchoMode(QLineEdit.PasswordEchoOnEdit)
# 设置输入框提示
# edit.setPlaceholderText('请输入用户名')
# 设置文本
edit.setText('张三')
# 设置输入框最大字符数
edit.setMaxLength(10)
# 显示输入框
edit.setParent(w)
# 3.显示窗口
w.show()
# 4.等待窗口停止
sys.exit(app.exec())
多行输入框QTextEdit:
from PyQt5.QtWidgets import QApplication,QWidget,QTextEdit
from PyQt5.QtCore import *
from PyQt5.QtGui import QIcon
import sys
# 1.创建应用程序
app = QApplication(sys.argv)
# 2.创建窗口
w = QWidget()
# 修改窗口标题
w.setWindowTitle('多行输入框')
"""------------------ 多行输入框 ------------------"""
edit = QTextEdit()
# 设置提示内容
# edit.setPlaceholderText('请输入发表的内容')
# 设置文本内容
edit.setPlainText('武汉疫情')
# 获取输入的内容
# print(edit.toPlainText())
edit.clear()
# 显示多行输入框
edit.setParent(w)
# 3.显示窗口
w.show()
# 4.等待窗口停止
sys.exit(app.exec())
按钮QPushButton:
from PyQt5.QtWidgets import QApplication,QWidget,QPushButton
from PyQt5.QtCore import *
from PyQt5.QtGui import QIcon
import sys
def func():
pass
# 1.创建应用程序
app = QApplication(sys.argv)
# 2.创建窗口
w = QWidget()
# 修改窗口标题
w.setWindowTitle('普通按钮')
"""------------------ 显示普通按钮 ------------------"""
btn = QPushButton()
# 添加按钮提示
# btn.setText('登录')
icon = QIcon('qq.png')
btn.setIcon(icon)
# 提示气泡
btn.setToolTip('登录按钮')
# 展示按钮
btn.setParent(w)
# 3.显示窗口
w.show()
# 4.等待窗口停止
sys.exit(app.exec())
信号和槽的绑定:
from PyQt5.QtWidgets import QApplication,QWidget,QPushButton
from PyQt5.QtCore import *
from PyQt5.QtGui import QIcon
import sys
def click():
print('hello')
# 1.创建应用程序
app = QApplication(sys.argv)
# 2.创建窗口
w = QWidget()
# 修改窗口标题
w.setWindowTitle('信号和槽的绑定')
"""------------------ 添加按钮 ------------------"""
btn = QPushButton()
btn.setText('点我')
btn.setParent(w)
# 绑定按钮点击的信号和处理的槽函数
# clicked 信号
# click定义的槽函数
# btn.clicked.connect(click)
"""------------------ 槽函数使用lambda表达式 ------------------"""
# 信号和槽函数参数必须要保持一致
# 如果信号中参数有= 槽函数可以不用添加
btn.clicked.connect(lambda :print('hello'))
# 3.显示窗口
w.show()
# 4.等待窗口停止
sys.exit(app.exec())
获取信号的发送者:
from PyQt5.QtWidgets import QApplication,QWidget,QPushButton
from PyQt5.QtCore import *
from PyQt5.QtGui import QIcon
import sys
# def click():
# # 同一个槽函数可以绑定不同的信号
# # 如何知道当前信号的发送者
# sendBtn = w.sender()
# # 修改发送者按钮 对应的文字
# sendBtn.setText('邮件')
def func(sender):
sender.setText('邮件')
# 1.创建应用程序
app = QApplication(sys.argv)
# 2.创建窗口
w = QWidget()
# 修改窗口标题
w.setWindowTitle('信号和槽的绑定')
"""------------------ 添加按钮 ------------------"""
btn = QPushButton()
btn.setText('点我')
btn.setParent(w)
# 绑定按钮点击的信号和处理的槽函数
# clicked 信号
# click定义的槽函数
# btn.clicked.connect(click)
# 信号clicked
# 槽函数:lambda
btn.clicked.connect(lambda :func(btn))
# 3.显示窗口
w.show()
# 4.等待窗口停止
sys.exit(app.exec())
使用系统的槽函数:
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import QIcon
import sys
def func():
# 关闭窗口
QApplication.quit()
# 1.创建应用程序
app = QApplication(sys.argv)
# 2.创建窗口
w = QWidget()
# 修改窗口标题
w.setWindowTitle('使用系统的槽函数')
"""------------------ 创建按钮 ------------------"""
btn = QPushButton()
btn.setText('关闭窗口')
# 显示按钮
btn.setParent(w)
"""------------------ 信号和槽绑定 ------------------"""
# btn.clicked.connect(func)
btn.clicked.connect(QApplication.quit)# 使用QApplication的quit方法
# 3.显示窗口
w.show()
# 4.等待窗口停止
sys.exit(app.exec())
绝对布局:
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import QIcon
import sys
# 1.创建应用程序
app = QApplication(sys.argv)
# 2.创建窗口
w = QWidget()
# 修改窗口标题
w.setWindowTitle('绝对布局')
"""------------------ 展示两个按钮 ------------------"""
btn1 = QPushButton()
btn2 = QPushButton()
btn1.setText('按钮1')
btn2.setText('按钮2')
# 显示
btn1.setParent(w)
btn2.setParent(w)
# 设置btn2坐标
btn2.move(200,200)
# 3.显示窗口
w.show()
# 4.等待窗口停止
sys.exit(app.exec())
水平布局:
from PyQt5.QtWidgets import QApplication,QWidget,QPushButton,QHBoxLayout
from PyQt5.QtCore import *
from PyQt5.QtGui import QIcon
import sys
# 1.创建应用程序
app = QApplication(sys.argv)
# 2.创建窗口
w = QWidget()
# 修改窗口大小
w.setFixedSize(1000,600)
# 修改窗口标题
w.setWindowTitle('水平布局')
"""------------------ 创建按钮 ------------------"""
btn1 = QPushButton('1')
btn2 = QPushButton('2')
btn3 = QPushButton('3')
btn4 = QPushButton('4')
btn5 = QPushButton('5')
# 创建布局
layout = QHBoxLayout()
# 添加布局到窗口中
w.setLayout(layout)
# 按钮控件添加到布局中
layout.addWidget(btn1)
layout.addWidget(btn2,alignment=Qt.AlignTop)
layout.addWidget(btn3)
layout.addWidget(btn4,alignment=Qt.AlignBottom)
layout.addWidget(btn5)
# 3.显示窗口
w.show()
# 4.等待窗口停止
sys.exit(app.exec())
竖直布局:
from PyQt5.QtWidgets import QApplication,QWidget,QPushButton,QVBoxLayout
from PyQt5.QtCore import *
from PyQt5.QtGui import QIcon
import sys
# 1.创建应用程序
app = QApplication(sys.argv)
# 2.创建窗口
w = QWidget()
w.setFixedSize(1000,600)
# 修改窗口标题
w.setWindowTitle('竖直布局')
"""------------------ 创建5个按钮 ------------------"""
btn1 = QPushButton('1')
btn2 = QPushButton('2')
btn3 = QPushButton('3')
btn4 = QPushButton('4')
btn5 = QPushButton('5')
btn1.setFixedSize(100,50)
btn2.setFixedSize(100,50)
btn3.setFixedSize(100,50)
btn4.setFixedSize(100,50)
btn5.setFixedSize(100,50)
# 创建布局
layout = QVBoxLayout()
# 布局添加到窗口中
w.setLayout(layout)
# 控件添加到布局中
layout.addWidget(btn1)
layout.addWidget(btn2,alignment=Qt.AlignRight)
layout.addWidget(btn3)
layout.addWidget(btn4,alignment=Qt.AlignHCenter)
layout.addWidget(btn5)
# 3.显示窗口
w.show()
# 4.等待窗口停止
sys.exit(app.exec())
设置伸缩量:
from PyQt5.QtWidgets import QApplication,QWidget,QPushButton,QHBoxLayout
from PyQt5.QtCore import *
from PyQt5.QtGui import QIcon
import sys
# 1.创建应用程序
app = QApplication(sys.argv)
# 2.创建窗口
w = QWidget()
# 修改窗口大小
w.setFixedSize(1000,600)
# 修改窗口标题
w.setWindowTitle('水平布局')
"""------------------ 创建按钮 ------------------"""
btn1 = QPushButton('1')
btn2 = QPushButton('2')
btn3 = QPushButton('3')
btn4 = QPushButton('4')
btn5 = QPushButton('5')
# 创建布局
layout = QHBoxLayout()
# 添加布局到窗口中
w.setLayout(layout)
# 按钮控件添加到布局中
layout.addStretch(1)
layout.addWidget(btn1)
layout.addStretch(1)
layout.addWidget(btn2)
layout.addStretch(3)
layout.addWidget(btn3)
layout.addStretch(1)
layout.addWidget(btn4)
layout.addStretch(2)
layout.addWidget(btn5)
layout.addStretch(1)
# 3.显示窗口
w.show()
# 4.等待窗口停止
sys.exit(app.exec())
表单布局:
from PyQt5.QtWidgets import QApplication,QWidget,QLineEdit,QFormLayout,QPushButton
from PyQt5.QtCore import *
from PyQt5.QtGui import QIcon
import sys
def func():
name = nameEdit.text()
age = int(ageEdit.text())
phone = phoneEdit.text()
print('姓名:%s,年纪:%d,电话:%s'%(name,age,phone))
# 1.创建应用程序
app = QApplication(sys.argv)
# 2.创建窗口
w = QWidget()
# 修改窗口标题
w.setWindowTitle('表单布局')
"""------------------ 创建布局 ------------------"""
layout = QFormLayout()
# 添加到窗口中
w.setLayout(layout)
# 输入框
nameEdit = QLineEdit()
ageEdit = QLineEdit()
phoneEdit = QLineEdit()
btn = QPushButton('发送')
# 添加到布局中
layout.addRow('姓名',nameEdit)
layout.addRow('年纪',ageEdit)
layout.addRow('电话',phoneEdit)
layout.addRow('',btn)
# 信号和槽绑定
btn.clicked.connect(func)
# 3.显示窗口
w.show()
# 4.等待窗口停止
sys.exit(app.exec())
嵌套布局:
from PyQt5.QtWidgets import QApplication,QWidget,QPushButton,QHBoxLayout,QVBoxLayout,QFormLayout
from PyQt5.QtCore import *
from PyQt5.QtGui import QIcon
import sys
# 1.创建应用程序
app = QApplication(sys.argv)
# 2.创建窗口
w = QWidget()
# 修改窗口标题
w.setWindowTitle('嵌套布局')
"""------------------ 实现布局 ------------------"""
# 整体水平布局
wholeLayout = QHBoxLayout()
# 添加整体布局
w.setLayout(wholeLayout)
# 每一部分布局
layout1 = QHBoxLayout()
layout2 = QVBoxLayout()
layout3 = QVBoxLayout()
layout4 = QVBoxLayout()
layout5 = QVBoxLayout()
# 添加到整体的布局中
wholeLayout.addLayout(layout1)
wholeLayout.addLayout(layout2)
wholeLayout.addLayout(layout3)
wholeLayout.addLayout(layout4)
wholeLayout.addLayout(layout5)
# 控件
btn1 = QPushButton('1')
btn2 = QPushButton('2')
btn3 = QPushButton('3')
btn4 = QPushButton('4')
btn5 = QPushButton('5')
btn6 = QPushButton('6')
btn7 = QPushButton('7')
btn8 = QPushButton('8')
btn9 = QPushButton('9')
btn10 = QPushButton('10')
btn11 = QPushButton('11')
btn12 = QPushButton('12')
# 添加第一部分控件
layout1.addWidget(btn1)
layout1.addWidget(btn2)
# 添加第二部分控件
layout2.addWidget(btn3)
layout2.addWidget(btn4)
# 添加第三部分控件
layout3.addWidget(btn5)
layout3.addWidget(btn7)
# 添加第四部分控件
layout4.addWidget(btn6)
layout4.addWidget(btn8)
# 添加第五部分控件
layout5.addWidget(btn9)
layout5.addWidget(btn10)
layout5.addWidget(btn11)
layout5.addWidget(btn12)
# 3.显示窗口
w.show()
# 4.等待窗口停止
sys.exit(app.exec())
提示框QMessageBox:
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import QIcon
import sys
def deleteUser():
# 弹出对话框,让用户确认
result = QMessageBox.question(w, '提示', '确认要删除好基友吗?', QMessageBox.Ok | QMessageBox.Cancel, QMessageBox.Cancel)
# result = QMessageBox.information(w, '提示', '确认要删除好基友吗?', QMessageBox.Ok | QMessageBox.Cancel, QMessageBox.Cancel)
if result == QMessageBox.Ok:
print('确认删除')
elif result == QMessageBox.Cancel:
print('取消删除')
# 1.创建应用程序
app = QApplication(sys.argv)
# 2.创建窗口
w = QWidget()
# 修改窗口标题
w.setWindowTitle('对话框')
"""------------------ 创建按钮 ------------------"""
btn = QPushButton('删除用户')
# 显示控件
btn.setParent(w)
# 信号和槽绑定
btn.clicked.connect(deleteUser)
# 3.显示窗口
w.show()
# 4.等待窗口停止
sys.exit(app.exec())
提示框QIputDialog:
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import QIcon
import sys
def func():
str,success = QInputDialog.getText(w,'提示','请输入角色名称')
if success:
edit.setText(str)
# 1.创建应用程序
app = QApplication(sys.argv)
# 2.创建窗口
w = QWidget()
# 修改窗口标题
w.setWindowTitle('输入提示框')
"""------------------ 创建界面 ------------------"""
layout = QHBoxLayout()
# 添加布局
w.setLayout(layout)
# 控件
btn = QPushButton('创建角色')
edit = QLineEdit()
# 控件添加到布局中
layout.addWidget(btn)
layout.addWidget(edit)
# 信号和槽函数绑定
btn.clicked.connect(func)
# 3.显示窗口
w.show()
# 4.等待窗口停止
sys.exit(app.exec())
单选框:
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import QIcon
import sys
def func(checked):
'''
状态变化的槽函数
:param checked: 是否被选中
:return:
'''
print('状态变化',checked)
# 1.创建应用程序
app = QApplication(sys.argv)
# 2.创建窗口
w = QWidget()
# 修改窗口标题
w.setWindowTitle('单选框')
"""------------------ 创建布局 ------------------"""
layout = QHBoxLayout()
# 添加布局到窗口中
w.setLayout(layout)
# 创建两个单选框
rb1 = QRadioButton('男')
rb2 = QRadioButton('女')
rb1.setChecked(True)
# 添加到布局中
layout.addWidget(rb1)
layout.addWidget(rb2)
# 绑定信号和槽
rb1.toggled.connect(func)
# 3.显示窗口
w.show()
# 4.等待窗口停止
sys.exit(app.exec())
多选框
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import QIcon
import sys
def func(state):
if state == 2:
print('选中')
elif state == 0:
print('取消选中')
# 1.创建应用程序
app = QApplication(sys.argv)
# 2.创建窗口
w = QWidget()
# 修改窗口标题
w.setWindowTitle('复选框')
"""------------------ 窗口布局 ------------------"""
layout = QHBoxLayout()
# 添加到窗口中
w.setLayout(layout)
# 控件
label = QLabel()
label.setText('爱好:')
ck1 = QCheckBox('抽烟')
ck2 = QCheckBox('喝酒')
ck3 = QCheckBox('烫头')
# 第一个默认选中
# ck1.setChecked(True)
# 添加控件到布局中
layout.addWidget(label)
layout.addWidget(ck1)
layout.addWidget(ck2)
layout.addWidget(ck3)
# 绑定信号和槽
ck1.stateChanged.connect(func)
# 3.显示窗口
w.show()
# 4.等待窗口停止
sys.exit(app.exec())
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import QIcon
import sys
sex = ''
hobiList = []
def regist():
global sex
# 获取用户名
name = nameEdit.text()
pwd = pwdEdit.text()
# 获取点击的性别
if rb1.isChecked():
sex = rb1.text()
elif rb2.isChecked():
sex = rb2.text()
elif rb3.isChecked():
sex = rb3.text()
# 爱好
if ck1.isChecked():
hobiList.append(ck1.text())
elif ck2.isChecked():
hobiList.append(ck2.text())
elif ck3.isChecked():
hobiList.append(ck3.text())
# 签名
sig = sigEdit.text()
# 择偶要求
textEditMsg = textEdit.toPlainText()
# 打印
msg = '用户名:{},密码:{},性别:{},爱好:{},个性签名:{},择偶要求:{}'.format(name,
pwd,sex,hobiList,sig,textEditMsg)
print(msg)
# 1.创建应用程序
app = QApplication(sys.argv)
# 2.创建窗口
w = QWidget()
# 修改窗口标题
w.setWindowTitle('注册登录')
"""------------------ 创建界面 ------------------"""
# 整体布局
wholeLayout = QVBoxLayout()
# 第一部分
firstLayout = QFormLayout()
# 第二部分
secondLayout = QHBoxLayout()
# 第三部分
regBtn = QPushButton('确认注册')
# 设置按钮的大小
regBtn.setFixedSize(100,30)
# 将整体的布局添加到窗口中
w.setLayout(wholeLayout)
# 添加三部分到整体布局中
wholeLayout.addLayout(firstLayout)
wholeLayout.addLayout(secondLayout)
wholeLayout.addWidget(regBtn,alignment=Qt.AlignHCenter)
# 第一部分控件
nameEdit= QLineEdit()
pwdEdit= QLineEdit()
sexLayout = QHBoxLayout()
rb1 = QRadioButton('男')
rb2 = QRadioButton('女')
rb3 = QRadioButton('妖')
rb1.setChecked(True)
sexLayout.addWidget(rb1)
sexLayout.addWidget(rb2)
sexLayout.addWidget(rb3)
hobiLayout = QHBoxLayout()
ck1 = QCheckBox('抽烟')
ck2 = QCheckBox('喝酒')
ck3 = QCheckBox('烫头')
hobiLayout.addWidget(ck1)
hobiLayout.addWidget(ck2)
hobiLayout.addWidget(ck3)
sigEdit = QLineEdit()
firstLayout.addRow('用户名',nameEdit)
firstLayout.addRow('密 码',pwdEdit)
firstLayout.addRow('性 别',sexLayout)
firstLayout.addRow('爱 好',hobiLayout)
firstLayout.addRow('个性签名',sigEdit)
# 第二部分
label = QLabel('择偶要求')
textEdit = QTextEdit()
secondLayout.addWidget(label)
secondLayout.addWidget(textEdit)
"""------------------ 注册事件 ------------------"""
regBtn.clicked.connect(regist)
# 3.显示窗口
w.show()
# 4.等待窗口停止
sys.exit(app.exec())