第三天补充内容:PyQt综合案例
需求:
实现一个用户注册界面,并将用户注册信息打印出来。
具体内容包括:
用户名、密码、性别、爱好、个性签名、择偶要求、确认注册按钮
实现效果图如下:
分析:
效果图整体呈现竖直布局;
局部可分三部分:1表单布局(用户名,密码,性别,爱好,个性签名);
2水平布局(择偶要求 多行输入文本框);
3注册按钮。
代码
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
import sys
#槽函数 获取注册用户信息
def func():
name=nameEdit.text()
pwd=pwdEdit.text()
#获取性别信息
sex=None
if rb1.isChecked(): #isChecked用来判断
sex='男'
elif rb2.isChecked():
sex='女'
else:
sex='妖'
#爱好信息
hobis=[] #可能不止一个爱好 用列表
if ck1.isChecked():
hobis.append(ck1.text())
if ck2.isChecked():
hobis.append(ck1.text())
if ck3.isChecked():
hobis.append(ck1.text())
#个性签名
sig=sigEdit.text()
#择偶要求
label=LabelEdit.toPlainText() #注意这多行文本与单行文本不一样 用toPlainText获取
#输出 格式化输出 列表没有具体的格式
print('用户名:{},密码:{},性别:{},爱好:{},个性签名:{},择偶要求:{}'.format(name,pwd,sex,hobis,sig,label))
#1创建应用程序
app=QApplication(sys.argv)
#2创建窗口
w=QWidget()
w.setWindowTitle('注册界面')
icon=QIcon('China.ico')
w.setWindowIcon(icon)
#整体垂直布局
wholelayout=QVBoxLayout()
w.setLayout(wholelayout)
# 第一部分 表单布局
formlayout=QFormLayout()
#输入框
nameEdit=QLineEdit()
nameEdit.setPlaceholderText('请输入用户名')
pwdEdit=QLineEdit()
pwdEdit.setPlaceholderText('请输入密码')
#性别 单选框
sexLayout=QHBoxLayout()
rb1=QRadioButton('男')
rb2=QRadioButton('女')
rb3=QRadioButton('妖')
sexLayout.addWidget(rb1)
sexLayout.addWidget(rb2)
sexLayout.addWidget(rb3)
#默认选中rb1
rb1.setChecked(True)
#爱好 复选框
hobLayout=QHBoxLayout()
ck1=QCheckBox('读书')
ck2=QCheckBox('跑步')
ck3=QCheckBox('听歌')
hobLayout.addWidget(ck1)
hobLayout.addWidget(ck2)
hobLayout.addWidget(ck3)
#签名
sigEdit=QLineEdit()
formlayout.addRow('用户名:',nameEdit)
formlayout.addRow('密 码:',pwdEdit)
formlayout.addRow('性 别:',sexLayout)
formlayout.addRow('爱 好:',hobLayout)
formlayout.addRow('个性签名:',sigEdit)
#第二部分 择偶要求 水平布局
hLayout=QHBoxLayout()
label=QLabel('择偶要求:')
LabelEdit=QTextEdit()
hLayout.addWidget(label)
hLayout.addWidget(LabelEdit)
#第三部分 注册按钮 可直接放到整体布局
btn=QPushButton()
btn.setText('注册按钮')
btn.setFixedSize(100,30) #尺寸大小
# 绑定按钮点击的信号和处理的槽函数
btn.clicked.connect(func)
#表单布局添加到整体布局中
wholelayout.addLayout(formlayout)
wholelayout.addLayout(hLayout)
wholelayout.addWidget(btn,alignment=Qt.AlignHCenter) #参数水平居中
#3显示窗口
w.show()
#4等待窗口停止
sys.exit(app.exec())
程序运行效果:
打印信息: