Python基础-pyqt5

                                                 PyQt

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环境搭建

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版本:

1.第一个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())

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

_无往而不胜_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值