常用控件2

摘要:
只需要双击Qtdesigner设计的窗体中的表格控件,就会出现这样的对话框。如果希望某个单元格为只读,不允许修改,可以使用QTableWidgetItem对象的setFlags方法,像这样fromPySide2.QtWidgetsimportQTableWidgetItemfromPySide2.QtCoreimportQtitem=QTableWidgetItemitem.setFlags#参数名字段不允许修改table.setItem如果想文本内容居中对齐,每个当对应的QTableWidgetItem调用setTextAlignment,如下fromPySide2.QtWidgetsimportQTableWidgetItemfromPySide2.QtCoreimportQtitem=QTableWidgetItem()item.setText#文本居中item.setTextAlignmenttable.setItem方法:获取单元格文本的内容item方法可以指定位置的单元格对象,再调用这个对象的text方法,就可以获取文本内容,比如table.item(0,0).text()就获取了第1行,第1列的单元格里面的文本。

组合选择框

QComboBox 是组合选择框,如下图所示

image

官网介绍

信号:选项改变

如果用户操作修改了QComboBox中的选项就会发出 currentIndexChanged信号,可以这样指定处理该信号的函数

cbox.currentIndexChanged.connect(handleSelectionChange)

方法:添加一个选项

代码中可以使用 addItem 方法来添加一个选项到 末尾 ,参数就是选项文本

cbox.addItem('byhy')

方法:添加多个选项

代码中可以使用 addItems 方法来添加多个选项到 末尾,参数是包含了多个选项文本的列表

cbox.addItems(['byhy','白月黑羽','python教程'])

方法:清空选项

代码中可以使用 clear 方法来清空选项,也就是删除选择框内所有的选项

cbox.clear()

方法:获取当前选项文本

代码中可以使用 currentText 方法来获取当前 选中的选项 的文本,比如

method = cbox.currentText()

列表

QListWidget 是列表控件,如下图所示

image

Qt Designer 如下图 选择:

image

官网介绍

方法:添加一个选项

代码中可以使用 addItem 方法来添加一个选项到 末尾 ,参数就是选项文本

listWidget.addItem('byhy')

方法:添加多个选项

代码中可以使用 addItems 方法来添加多个选项到 末尾,参数是包含了多个选项文本的列表

listWidget.addItems(['byhy','白月黑羽','python教程'])

方法:删除一个选项

代码中可以使用 takeItem 方法来删除1个选项,参数是该选项所在行

listWidget.takeItem(1)

就会删除第二行选项

方法:清空选项

代码中可以使用 clear 方法来清空选项,也就是删除选择框内所有的选项

listWidget.clear()

方法:获取当前选项文本

currentItem 方法可以得到列表当前选中项对象(QListWidgetItem) ,再调用这个对象的 text 方法,就可以获取文本内容,比如

listWidget.currentItem().text()

就获取了 第1行,第1列 的单元格里面的文本。

listWidget.currentItem().text()

表格

QTableWidget 是表格控件,如下图所示

image

Qt Designer 如下图 选择:

image

官网介绍

创建列 和 标题栏

我们可以通过 Qt designer 为一个表格创建列和对应的标题栏。

只需要双击 Qt designer 设计的窗体中的 表格控件, 就会出现这样的对话框。

image

标签栏中,点击左下角的加号,就可以为 添加一个列,并且设置标题栏名称。

image

方法:插入一行、删除一行

insertRow 方法可以在指定位置插入一行,比如

table.insertRow(0)

就插入一行到第 1 行这个位置, 表格原来第1行(包括原来的第1行)以后的内容,全部往下移动一行。

table.insertRow(2)

就插入一行到第 3 行这个位置, 表格原来第3行(包括原来的第3行)以后的内容,全部往下移动一行。

removeRow 方法可以删除指定位置的一行,比如

table.removeRow(0)

就删除第 1 行, 表格原来第1行以后的内容,全部往上移动一行。

table.removeRow(2)

就删除第 3 行, 表格原来第3行以后的内容,全部往上移动一行。

方法:设置单元格文本内容

qt表格的单元格内的内容对象 是一个 单元格对象 QTableWidgetItem 实例

如果单元格 没有被设置过 内容,可以这样

from PySide2.QtWidgets import QTableWidgetItem

item = QTableWidgetItem()
item.setText('白月黑羽')
table.setItem(row, 0, item)

也可以简写为

from PySide2.QtWidgets import QTableWidgetItem

table.setItem(row, 0, QTableWidgetItem('白月黑羽'))

如果单元格 已经被设置过 文本内容,

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

table.item(0,0).setText('白月黑羽-江老师')

就设置了 第1行,第1列 的单元格里面的文本。

table.item(2,4).setText('白月黑羽-江老师')

就设置了 第3行,第5列 的单元格里面的文本。

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

from PySide2.QtWidgets import QTableWidgetItem
from PySide2.QtCore import Qt

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

如果想文本内容 居中对齐,每个当对应的QTableWidgetItem 调用 setTextAlignment,如下

from PySide2.QtWidgets import QTableWidgetItem
from PySide2.QtCore import Qt

item = QTableWidgetItem()
item.setText('白月黑羽')
# 文本居中
item.setTextAlignment(Qt.AlignHCenter) 
table.setItem(row, 0, item)

方法:获取单元格文本的内容

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

table.item(0,0).text()

就获取了 第1行,第1列 的单元格里面的文本。

table.item(2,4).text()

就获取了 第3行,第5列的单元格里面的文本。

方法:获取所有行数、列数

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

rowcount = table.rowCount()

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

rowcount = table.columnCount()

方法:获取当前选中是第几行

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

currentrow = table.currentRow()

注意:行数是从0开始的, 第一行的行数是 0

方法:设置表格行数、列数

代码中可以使用 setRowCount 方法来设置表格 行数 ,比如

table.setRowCount(10)

代码中可以使用 setColumnCount 方法来设置表格 列数 ,比如

table.setColumnCount(10)

方法:清除/删除所有内容

clearContents 方法可以清除表格所有的内容,比如

table.clearContents()

清除后,仍然会留下表格栏

如果连表格栏都要删除,可以使用 setRowCount(0),像这样

table.setRowCount(0)

方法:设定列宽、宽度自动缩放

Qt Designer 上目前没法拖拽设定 每个列的宽度,只能在代码中指定。

如下所示

# 设定第1列的宽度为 180像素
table.setColumnWidth(0, 180)

# 设定第2列的宽度为 100像素
table.setColumnWidth(1, 100)

如想让 表格控件宽度 随着父窗口的缩放自动缩放,可以

在 属性编辑器 中 勾选 HorizontalHeaderStretchLastSection

或者使用下面代码

table.horizontalHeader().setStretchLastSection(True)

信号:单元格内容改动

当用户修改了一个单元格的内容,会发出 cellChanged 信号,并且携带参数指明该单元格的行号和列号。

我们的代码可以对该信号进行相应的处理。

示例代码如下

    def __init__(self):
        # 指定单元格改动信号处理函数
        self.ui.table.cellChanged.connect(self.cfgItemChanged)

    
    def cfgItemChanged(self,row,column):
        # 获取更改内容
        cfgName = self.ui.table.item(row, 0).text() # 首列为配置名称
        cfgValue = self.ui.table.item(row, column).text()

实战练习

表格控件常用于展示行列结构的数据, 比如数据库数据。下面的截图是实战班的一个数据库 和 表格控件 数据联动的练习。

小班学员请联系老师获取相关练习和参考代码。

image

免责声明:文章转载自《常用控件2》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JS拖动滑块验证构建属于自己的恶意软件特征库下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C# 在Word表格中插入新行(表格含合并行)

public string CreateWordFile(string CheckedInfo)         {             string message = "";             try             {                 Object Nothing = System.Reflection.Missin...

04-表格 table(会使用)

第01阶段.前端基础.表格 HTML 第二天目标 能够利用表格、列表和表单完成注册页面的综合案例 能出说表格用来做什么的 能说出列表用来做什么的 能说出表单用来做什么的 为了让我们页面显示的更加整齐,我们需要学习三个表(表格、表单、列表) 表格 table(会使用) 目标: 理解: 能说出表格用来做什么的 表格的基本结构组成 应用: 能够熟练...

DataGridView很详细的用法

DataGridView很详细的用法  一、 DataGridView 取得或者修改当前单元格的内容: 当前单元格指的是 DataGridView 焦点所在的单元格,它可以通过 DataGridView 对象的 CurrentCell 属性取得。如果当前单元格不存在的时候,返回Nothing(C#是null) // 取得当前单元格内容 Cons...

C#窗体控件DataGridView常用设置

C#窗体控件DataGridView常用设置 在默认情况下,datagridview的显示效果: 1.禁用最后一行空白。   默认情况下,最后一行空白表示自动新增行,对于需要在控件中进行编辑,可以保留 dataGridView1.AllowUserToAddRows = false;   上述禁用,仅是将用户界面交互的自动新增行禁了,但还是可以通过代码:...

poi的各种单元格样式以及一些常用的配置

之前我做过一个poi到处excel数据的博客,但是,后面使用起来发现,导出的数据单元格样式都不对。 很多没有居中对齐,很多单元格的格式不对,还有就是单元格的大小不对,导致数据显示异常,虽然功能可以使用但不是很完美。 这里找到网上一个比较全面的简单设置。这么做一个记录,之后就是参考这个单元格的样式配置自己需要的格式。 官方给出的api太难了,还是看中文的吧。...

Handsontable对单元格的操作

1.自动填充单元格数据 fillHandle:true/false    //当值为true时,允许拖动单元格右下角,将其值自动填充到选中的单元格 2.合并单元格 mergeCells:[{row:起始行数,cols:起始列数,rowspan:合并的行数,colspan:合并的列数},...] 3.初始化单元格或列的对齐方式 水平样式:htLeft,h...