pyqt入门

常用的窗口控件

•QMainWindow、QWidget和QDialog三个类都是用来创建窗口的,可以直接使用,也可以继承后再使用

创建主窗口菜单

python 界面qt开发_文本框

设置窗口图标,标题,改变窗口大小

python 界面qt开发_python_02

将窗口移动到屏幕中心

x = (屏幕宽度-窗口宽度)/2

y = (屏幕高度-窗口高度)/2

方法

调用对象

方法说明

screenGeometry()

QDesktopWidget()

获取屏幕尺寸

geometry()

QMainWindow()

获取窗口尺寸

move(x,y)

QMainWindow()

移动到指定的位置

python 界面qt开发_python_03

气泡提示

•设置气泡需要用到下面这个方法

setToolTip(msg) msg----为提示信息,字符串形式

# 设置提示
button.setToolTip('这个按钮是发送消息按钮')   #鼠标移动到按钮上后会弹出提示

pyqt常用API学习

文本框–用QLabel实现

•QLabel可以显示不可编辑的文本或图片,也可以放置一个GIF动画

•QFont开设置字体样式和字体大小

# QLabel
label = QLabel()
# 设置文本信息
label.setText('这是一个文本消息')
# 设置文本样式
label.setFont(QFont('宋体',20))    #setFont用来设置字体
# 设置父窗体
label.setParent(widget)

编辑图片

# 创建QLabel
label = QLabel()
# 创建PixMap
map = QPixmap('xuexi.png')
# 设置图片
label.setPixmap(map)             #setpixmap--map为路径+图片名
# 设置父窗体
label.setParent(widget)
文本框控件

•即输入框,QLineEdit是单行文本输入框,QTextEdit是多行文本输入框

QlineEdit

方法

说明

setEchoMde()

QLineEdit.Normal,正常显示所输入的字符,默认选项 QLineEdit.NoEcho,不显示任何输入的字符,常用于密码类型的输入,且其密码长度需要保密时 QLineEdit.Password,显示与平台相关的密码掩码字符,而不是实际输入的字符 QLineEdit.PasswordEchoOnEdit,在编辑时显示字符,负责显示密码类型的输入

setPlaceholderText()

设置文本框浮显文字

setText()

设置文本框内容

setMaxLength()

设置文本框所允许输入的最大字符数

#设置文本框
edit = QLineEdit()
# 设置提示文字
edit.setPlaceholderText('请输入QQ')
# 设置文字
edit.setText('12312321')
# 设置输入框模式
# edit.setEchoMode(QLineEdit.NoEcho)   #输入不显示任何字符
# edit.setEchoMode(QLineEdit.Password)  #密码模式时
edit.setEchoMode(QLineEdit.PasswordEchoOnEdit)
# 设置最大长度
edit.setMaxLength(5)

# 显示设置父窗体
edit.setParent(widget)
edit.resize(100,500)           #设置文本框框体的大小

QTextEdit

•QTextEdit类是一个多行文本框控件,可以显示多行文本内容,当文本内容超过控件显示范围时,可以显示水平或竖直滚动条.

•QTextEdit不仅可以显示文本还可以显示HTML文档.

方法

说明

setPlainText()

设置多行文本框的文本内容

toPlainText()

返回多行文本框的文本内容

setHtml()

设置多行文本框的内容为HTML文档

toHtml()

返回多行文本框的HTML文档内容

clear()

清空多行文本框的内容

# 创建多行输入框
edit = QTextEdit()
edit.setPlaceholderText('请输入留言')     #注意此处与setText用法的区别,多了一个place

# 输入文字
# edit.setText('2222')                  #输入文字时这两种方式都可以
edit.setPlainText('2222')
# 清空
edit.clear()
按钮控件-

-•常见的按钮实现类包括:按钮–QPushButton、单选框–QRadioButton和复选框–QCheckBox

QPushButton

python 界面qt开发_Layout_04

单选框–QRadioButton:它提供了一组可供选择的按钮和文本标签,用户可以选择其中一个选项

复选框–QCheckBox

单选框和复选框的信号都是:toggled

toggled是一个状态改变信号,不是选中信号。

def deal(btn):
    if btn.isChecked():                #如果bnt按钮被选中
        # 输出哪个选中了
        print(btn.text())               #输出bnt上的文本内容
# 创建布局
layout = QHBoxLayout()

rb1 = QRadioButton('button1')
# 设置切换信号
rb1.toggled.connect(lambda :deal(rb1))   #发生状态改变的信号

rb2 = QRadioButton('button2')
rb2.toggled.connect(lambda :deal(rb2))    #****注意connect链接一个带参数的函数前面必须加lambda


rb2.setChecked(True)                      #默认按钮rb2前的勾选框被选中

常用组件(1)

信号和槽

•如果信号和多个槽函数相关联,当信号被发射时,这些槽的执行顺序将会是随机的、不确定的。

# 将信号和槽函数关联
button.clicked.connect(showMsg)      #***注意clicked没有(),它是一个信号,connect的()内是一个函数,                                           而不是一个函数返回值,所以showMsg后面不能加()
# button.clicked.connect(lambda :print('hello'))
'''需求:点击按钮,关闭窗口'''
def close():
    print('关闭窗口')
    app.quit()
# 创建按钮
button  =QPushButton()
# 文本
button.setText('关闭窗口')
# 点击信号
 button.clicked.connect(close)                  #和下面两种方式都可以,但注意connect后是函数的名字
# button.clicked.connect(app.quit)

布局管理

•所谓布局,指的就是多个控件在窗口中的展示方式

•布局方式大致分为:绝对布局、水平布局、竖直布局、网格布局、表单布局

•布局中可以添加控件,使用addWidget()方法

•布局中也可以再添加布局,使用addLayout()方法

框布局

•水平布局(QHBoxLayout)和竖直布局(QVBoxLayout)都称为框布局

•水平布局中是按照从左往右的顺序添加控件的,•竖直布局采用QVBoxLayout,是采用从上往下的方式添加控件的

参数

说明

Qt.AlignLeft

水平左对齐

Qt.AlignRight

水平右对齐

Qt.AlignCenter

水平居中对齐

Qt.AlignJustify

水平两端对齐

Qt.AlignTop

竖直上对齐

Qt.AlignBottom

竖直下对齐

Qt.AlignVCenter

竖直居中对齐

#创建水平布局
layout = QHBoxLayout()
#把按钮添加到布局中
btn=QPushButton()
layout.addWidget(btn,0,Qt.AlignBottom)    #将按钮添加到布局的底部
#layout.addWidget(btn)          #这种方式默认从上至下添加控件
# 把布局放到窗口中
widget.setLayout(layout)         #注意这里不能用layout.setParent(widget)

表单布局

QFormLayout

•表单布局添加控件的方法为 addRow(label,widget)

# 创建布局
layout = QFormLayout()

# 添加控件
layout.addRow(QLabel('姓名'),QLineEdit())
layout.addRow(QLabel('年纪'),QLineEdit())
layout.addRow(QLabel('电话'),QLineEdit())

# 显示布局
widget.setLayout(layout)

布局嵌套

layout4 = QVBoxLayout()
layout.addLayout(layout4)    #布局中添加布局

常用控件(2)

对话框控件

•QDialog的子类有:QMessageBox、QFileDialog、QFontDialog.QInputDialog

QMessageBox–对话框
def deal():
    print('点击了按钮')
    # 参数1:显示在哪个窗体中
    # 参数2:标题
    # 参数3:提示内容
    # 参数4:按钮个数
    # 参数5:默认按钮选中
    QMessageBox.information(widget,'对话框','提示信息!',QMessageBox.Ok|QMessageBox.Cancel,QMessageBox.Ok)
    #QMessageBox.question(widget,'对话框','提示信息?',QMessageBox.Ok,QMessageBox.Ok)

    #区别一个提示?,一个提示!。。上面那个弹出对话框有两个按钮,默认ok,下面有一个按钮,默认ok
    
# 创建按钮
btn = QPushButton()
btn.setText('显示对话框')
# 处理按钮点击事件
btn.clicked.connect(deal)          #发送信号后执行槽函数
QInputDialog-输入框对话框

•QInputDialog控件是一个标准对话框,由一个文本框和两个按钮(OK按钮和Cancel按钮)组成

def create():
    str,ok = QInputDialog.getText(widget,'提示','请输入角色')   #(基于widget弹出,标题,提示内容)
    if ok:
        print(str)                   #点击ok后输出文本框内输入的信息
# 按钮
btn = QPushButton('创建角色')

# 设置槽函数
btn.clicked.connect(create)

# 显示按钮
btn.setParent(widget)