4 常用控件


一、按钮

1 QPushButton :按钮

QPushButton 就是常见的按钮在这里插入图片描述
官网介绍

(1) 信号:被点击

当按钮被点击就会发出 clicked 信号,可以这样指定处理该信号的函数

button.clicked.connect(handleCalc)

(2) 改变文本

代码中可以使用 setText 方法来改变按钮文本,比如

button.setText(text)

(3) 禁用、启用

所有控件(继承自QWidget类)都支持 禁用和启用方法。
禁用后,该控件不再处理用户操作

  • 禁用
button.setEnabled(False)
  • 启用
button.setEnabled(True)

(4) 设置图标

可以通过如下方法给按钮设置图标

from PySide6.QtCore import Qt,QSize
from PySide6.QtGui import QIcon

# 设置图标
button.setIcon(QIcon('logo.png'))

# 设置图标大小
button.setIconSize(QSize(30, 30))

2 单选按钮和按钮组

(1)说明

QRadioButton 是单选按钮,如图所示在这里插入图片描述

【注】:
同一个父窗口 里面的多个单选按钮,只能选中一项。
如果你有多组单选按钮, 每组都应该有不同的父控件,或者不同的Layout。
通常建议:多组单选按钮,放到不同的 按钮组 QButtonGroup 中

qt designer 单选按钮和按钮组演示视频

(2)信号:选中状态改变(搭配按钮组使用)

如果用户操作点击了按钮组 QButtonGroup 中的一个按钮, QButtonGroup 就会发出 buttonClicked 信号,可以这样指定处理该信号的函数

buttongroup.buttonClicked.connect(handleButtonClicked)

然后,在处理函数中调用QButtonGroup对象的 checkedButton() 函数,返回值就是被选中的按钮对象。
再调用这个返回的按钮对象的 text() 方法得到界面文本,就可以知道是哪个选项被选中了。

3 多选按钮和按钮组

二、标签:QLabel

QLabel 就是常见的标签,可以用来显示文字(包括纯文本和富文本)、图片 甚至动画。
在这里插入图片描述

三、编辑框

1 单行文本框

2 多行文本框

3 文本浏览框(只能展示文本不能修改输入文本)

三、下拉框

四、表格:QTableWidget

QTableWidget 是表格控件,如下图所示在这里插入图片描述
表格控件单元格里面可以显示文字,也可以显示富文本、图片等内容。

表格控件的每个单元格里面要显示内容,都必须创建一个 QTableWidgetItem 类型的对象。
也就是说,我们如果要往表格的单元格里面添加东西,都必须QTableWidgetItem 类型的对象,往这个里面添加东西。

Qt Designer 如下图 选择:
在这里插入图片描述

1 实例化(如果不采用ui,也可以代码生成)

可以通过Qt设计师创建UI,然后加载界面的方式实例化。
也可以直接通过代码创建表格控件实例

from PySide6 import  QtWidgets

rows    = 0  # 行数
columns = 2  # 列数

# parent变量对应的是父控件对象
table = QtWidgets.QTableWidget(rows, columns, parent)

2 设置表格自动缩放(一定要设置,不然很难看)

# 设置表格自动缩放(放在最前面)
table.horizontalHeader().setStretchLastSection(True)

3 设置表格不可编辑

# 设置表格不可编辑
table.setEditTriggers(QTableWidget.NoEditTriggers)

4 设置表格列数并添加表头、设置表格行数

# 设置表格列数 2列
table.setColumnCount(2)
# 添加表头
table.setHorizontalHeaderLabels(["名称", "值"])

# 设置表格行数 10行
table.setRowCount(10)

5 插入一行、删除一行

【注】:index是从零开始的

  • insertRow 方法可以在指定位置插入一行,比如
table.insertRow(0)
# 就插入一行到第 1 行这个位置, 表格原来第1行(包括原来的第1行)以后的内容,全部往下移动一行。
table.insertRow(2)
# 就插入一行到第 3 行这个位置, 表格原来第3行(包括原来的第3行)以后的内容,全部往下移动一行。
  • removeRow 方法可以删除指定位置的一行,比如
table.removeRow(2)
# 就删除第 3 行, 表格原来第3行以后的内容,全部往上移动一行。

6 设置单元格内容、对齐、属性

(1)指定位置单元格添加内容和修改指定位置单元格内容

【注】:index是从零开始的
qt表格的单元格内的内容对象 是一个 单元格对象 QTableWidgetItem 实例

  • 如果单元格 没有被设置过内容,我们需要先为这个单元格创建QTableWidgetItem 对象,可以这样
from PySide6.QtWidgets import QTableWidgetItem

item = QTableWidgetItem()
item.setText('白月黑羽')
table.setItem(row_index, column_index, item)

# table.setItem(0, 0, QTableWidgetItem('白月黑羽')) 就是将第一列设置内容为'白月黑羽'。这种简写方式也是可以的
  • 如果单元格 已经被设置过文本内容,我们就不必额外创建QTableWidgetItem 对象了
    item 方法可以获取指定位置的 QTableWidgetItem ,再调用这个对象的 setText 方法,就可以设置单元格文本内容,比如
table.item(2,4).setText('白月黑羽-江老师')
# 就设置了 第3行,第5列 的单元格里面的文本。

(2)设置指定位置单元格为只读

  • 如果希望某个单元格为 只读,不允许修改,可以使用QTableWidgetItem对象的 setFlags 方法,像这样
from PySide6.QtWidgets import QTableWidgetItem
from PySide6.QtCore import Qt

item = QTableWidgetItem('白月黑羽')
item.setFlags(Qt.ItemIsEnabled) # 参数名字段不允许修改

table.setItem(row_index, column_index, item)

(3)设置指定单元格文本内容居中对齐

  • 如果想文本内容 居中对齐,每个当对应的QTableWidgetItem 调用 setTextAlignment,如下
from PySide6.QtWidgets import QTableWidgetItem
from PySide6.QtCore import Qt

item = QTableWidgetItem()
item.setText('白月黑羽')
# 文本居中
item.setTextAlignment(Qt.AlignCenter) 

table.setItem(row_index, column_index, item)

7 获取内容

(1)获取指定单元格的文本内容

item 方法可以指定位置的单元格对象(QTableWidgetItem) ,再调用这个对象的 text 方法,就可以获取文本内容,比如

table.item(2,4).text()
# 获取了 第3行,第5列 的单元格里面的文本。

(2)获取所有行数、列数

代码中可以使用 rowCount 方法来获取表格所有的 行数 ,比如

rowcount = table.rowCount()

可以使用 columnCount 方法来获取表格所有的 列数 ,比如

rowcount = table.columnCount()

(3)获取表格当前选中的行数或者列数

获取当前选中的单行或者单列

代码中可以使用 currentRow 方法来获取当前选中是第几行,比如

currentrow = table.currentRow()

【注】:如果没有选中行,这里返回的是 -1
注意:行数是从0开始的, 第一行的行数是 0

以上代码显然需要搭配按钮世界一起来演示,下面是示例

import sys
from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem, QVBoxLayout, QPushButton, QWidget, QMessageBox


class MyWindow(QWidget):
    def __init__(self):
        super().__init__()

        # 创建QTableWidget
        self.tableWidget = QTableWidget(5, 3)  # 5行3列
        self.tableWidget.setItem(0, 0, QTableWidgetItem("Item 1"))
        self.tableWidget.setItem(1, 0, QTableWidgetItem("Item 2"))
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值