PyQt5快速入门教程(三) --- 常用控件

PythonPyqt5

咕鸽框架 更新2020年05月22日 64 8578字 CID:P6

PyQt5快速入门教程(三) --- 常用控件

回顾上节课

  • Qt Designer基础用法
  • 让python显示我们画的ui

本节课内容

  • 熟悉常用控件的功能
  • 熟悉常用控件的命令

    • QLabel(标签)
    • QPushButton(按钮)
    • QLineEdit(编辑框)
    • QComboBox(下拉框)
    • QCheckBox(复选框)
    • QRadioButton(单选框)
    • QListWidget(列表框)
    • QTableWidget(表格)

注: 本教程为快速入门, 只会讲最常见用法
若想深究, 请百度 PyQt5 + 控件名看详解

让咱们开始吧!

环境

使用的环境和ui都是上节课里的, 代码如下

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from my_first_ui import *  # 导入我们刚转换的ui

class MyWindows(Ui_MainWindow, QMainWindow):
    def __init__(self):
        super(MyWindows, self).__init__()
        self.setupUi(self)
        self.demo()

    def demo(self):
        """
        本节课所有的控件都在此函数里进行演示
        """
        pass


app = QApplication(sys.argv)
my_windows = MyWindows()  # 实例化对象
my_windows.show()  # 显示窗口
sys.exit(app.exec_())

QLabel(标签)

Label用来显示一段文本, 一段html代码, 或者是一张图片

AxiWPP.png

QLabel有3个最常用属性

属性名说明
text设置文字
pixmap图片
scaledContents图片缩放

Axi8u4.png

未缩放的状态
Axi4xS.png

缩放后状态
Axih28.png

常用命令

self.label.setText("文本")    # 设置label的文本
print(self.label.text())      # 输出label的文本

pic1 = QPixmap("zfb.png")     # 加载1.png
pic1 = pic1.scaled(100, 200)  # 把图片缩放为(100, 200), 没有这一句则不缩放
self.label.setPixmap(pic1)    # 设置图片

pic2 = QPixmap()
url = "http://www.baidu.com/img/baidu_jgylogo3.gif"
pic2.loadFromData(requests.get(url).content)  # 从网络上加载图片
self.label.setPixmap(pic2)  # 设置图片

QPushButton(按钮)

不用说了, 大家都遇到很多次了

AxFkPx.png

AxFPaR.png

属性名说明
text默认显示文字
icon显示图片
iconSize显示图片的大小
def foo(*args):
    print("foo被执行了, 带的数据是", args)


self.pushButton.setAutoRepeat(True)  # 设置长按时重复执行任务
print(self.pushButton.isChecked())  # 提示按钮是否已按下

self.pushButton.Pressed.connect(foo)  # 当鼠标指针在按钮上并按下左键时执行foo
self.pushButton.Released.connect(foo)  # 当鼠标左键被释放时执行foo
self.pushButton.clicked.connect(foo)  # 当鼠标左键被按下然后释放时,或者快捷键被释放时执行foo
self.pushButton.Toggled.connect(foo)  # 当按钮的标记状态发生改变时执行foo

QLineEdit(编辑框)

用于输入一行数据, 如帐号, 密码

AxiIKg.png

Axif8f.png

属性名说明
text默认显示文字
maxLength最大长度
echoMode显示风格 例如普通输入和密码输入
readOnly只读 只能看, 不能改
def foo(*args):
    print("foo被执行了, 带的数据是", args)

self.lineEdit.setText("Hello World")  # 设置文字
self.lineEdit.setEchoMode(QLineEdit.Normal)  # 设置文本框的显示格式
#  QLineEdit.Normal 正常显示所输入的字符,此为默认选项
#  QLineEdit.NoEcho 不显示任何输入的字符,常用于密码类型的输入,且长度保密
#  QLineEdit.Password 显示与平台相关的密码掩饰字符
#  QLineEdit.PasswordEchoOnEdit 在编辑时显示字符,负责显示密码类型的输入

self.lineEdit.setClearButtonEnabled(True)  # 在编辑框右边加入一个清空按钮
self.lineEdit.setMaxLength(10)  # 设置所允许输入的最大字符数为10
self.lineEdit.setReadOnly(True)  # 设置只读    False取消只读

self.lineEdit.setFocus()  # 获取焦点
self.lineEdit.selectAll()  # 全选

self.lineEdit.editingFinished.connect(foo)  # 按下返回或回车键或线条编辑失去焦点时 执行foo
self.lineEdit.returnPressed.connect(foo)  # 按下返回或回车键时 执行foo
self.lineEdit.textChanged.connect(foo)  # 只要文字发生变化就会 执行foo, 包括setText()
self.lineEdit.textEdited.connect(foo)  # 无论何时编辑文本都会 执行foo, 不包括setText()

QComboBox(下拉框)

用于在多组数据中选择一个

AxiorQ.png

AxwOx0.png

右键选择第一项可编辑预设选项
Axiban.png

AxiHVs.png

属性名说明
editable可否编辑
currentText现在文本 这个和下面那个同步
currentIndex现行选中项
maxVisibleItems下拉后最多显示多少项
def foo(*args):
    print("foo被执行了, 带的数据是", args)

self.comboBox.addItems(["选项1", "选项2", "选项3"])  # 添加多个选项
self.comboBox.addItem("选项4")  # 添加单个选项
self.comboBox.addItem(QIcon("icon.png"), "带图标的选项5")  # 添加一个带图标的选项 图标为同目录下icon.png
self.comboBox.setCurrentIndex(1)  # 设置选中第二个选项(第二个下标为1)
self.comboBox.setCurrentText("选项999")  # 只有在editable选中时才有效
print(self.comboBox.currentIndex())
print(self.comboBox.currentText())

self.comboBox.currentIndexChanged.connect(foo)  # 当选项改变时执行foo
self.comboBox.activated.connect(foo)  # 当comboBox被选择时执行foo

QCheckBox(复选框)

用于确定是否勾选

Axiq5q.png

AxiOP0.png

属性名说明
text显示文字
icon显示图标
checkable可否被选中
checked设置已被选中状态
def foo(*args):
    print("foo被执行了, 带的数据是", args)

self.checkBox.setText("测试文本")  # 设置显示文字
print(self.checkBox.isChecked())  # True||False 打印是否被选中
self.checkBox.setChecked(True)  # 用代码选中复选框 False为不选中

self.checkBox.stateChanged.connect(foo)  # 选项改变时执行foo

QRadioButton(单选框)

用于在多个选项中选择一个

AxiXGV.png

Axij2T.png

代码和QCheckBox几乎是一样的

属性名说明
text显示文字
icon显示图标
checkable可否被选中
checked设置已被选中状态
def foo(*args):
    print("foo被执行了, 带的数据是", args)


self.radioButton.setText("测试文本")  # 设置显示文字
print(self.radioButton.isChecked())  # True||False 打印是否被选中
self.radioButton.setChecked(True)  # 用代码选中单选框 False为不选中

self.radioButton.stateChanged.connect(foo)  # 选项改变时执行foo

QListWidget(列表框)

用于列出一堆东西, 比如日志/选项

AxivxU.png

AxizMF.png

属性名说明
currentRow现行选中项

右键点击第一项也会有一个设置选项的对话框

AxizMF.png

ListWidget的功能就比较复杂了

def foo(*args):
    print("foo被执行了, 带的数据是", args)

self.listWidget.addItems(["选项1", "选项2", "选项3"])
self.listWidget.addItem("选项4")
self.listWidget.insertItem(0, "选项0")  # 在0位置插入一个选项

self.listWidget.setCurrentItem(self.listWidget.item(1))  # 设置当前选中项为1
self.listWidget.sortItems()  # 按升序重新排列条目

print(self.listWidget.item(3).text())  # 打印索引为3的项目的文本
print(self.listWidget.currentItem().text())  # 打印现行选中项的文本
print(self.listWidget.row(self.listWidget.currentItem()))  # 打印现行选中项的索引
self.listWidget.clear()  # 清空列表

self.listWidget.currentItemChanged.connect(foo)  # 当列表中的条目发生改变时执行foo
self.listWidget.itemClicked.connect(foo)  # 当点击列表中的条目时执行foo

QTableWidget(表格)

顾名思义, 就是显示出一个表格

AxFSr4.png

AxFiI1.png

AxFiI1.png

由于表格的内容实在太多, 我推荐在这里详细学习传送门

版权声明:
本文基于《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权
文章链接:http://blog.z31.xyz/index.php/archives/6/ (转载时请注明本文出处及文章链接)

评论

咕鸽框架

咕鸽框架

⭐相关推荐

Django Rest framework(drf) 快速入门(二) -- 使用Serializer大幅简化代码量

0x00 前言接上次代码, 完成了数据的获取和提交, 本次将会用到Serializer对数据进行定义, 从而大幅减少代码量, 提高代码复用率0x01 编写...

PyQt5快速入门教程(二) --- Qt Designer基础操作

PyQt5快速入门(二)回顾上节课搭建PyQt5环境测试PyQt5环境本节课内容Qt Designer基础用法让python显示我们画的ui让咱们开始吧!...

PyQt5快速入门(一) --- 环境配置与第一个程序

PyQt5快速入门(一)前言为什么选择PyQt5作为GUI框架?API与Qt一致, 学会PyQt后再使用qt很简单开发迅速, 可视化操作,使用design...

PyQt5中在QListWidget自定义Item的方法

PyQt5中在QListWidget自定义Item的方法效果图自定义一个Item新建一个QWidget对象在QWidget内添加Layout在Layout...

✨当下热门