def display():
curtext = cbox.currentText() # 获取当前文本
ouput.setText(curtext) # 获取当前文本并作为字符串传递给QLabel显示出来
ouput = QLabel(window)
ouput.resize(80, 20)
ouput.move(150, 30)
cbox = QComboBox(window)
cbox.addItems(("one", "two", "three"))
ouput.setText(cbox.currentText()) # 获取当前文本并作为字符串传递给QLabel显示出来
cbox.currentIndexChanged.connect(display)
cbox.move(40, 10)
window.show()
app.exec_()
QListWidget
是列表控件
信号:选项改变
如何用户使用操作选中
QListWidget
中的某一个选项就会 发出
itemSelectionChanged
信号,可以这样指定处理该信号的函数
listsheet.itemSelectionChanged.connect(function)
方法:添加一个选项
代码中同样可以使用
addItem
方法来添加一个选项到 末尾 ,参数就是选项文本(与下拉框一样)
listsheet.addItem("测试一")
listsheet.addItem("测试二")
listsheet = QListWidget(window)
listsheet.move(15, 5)
listsheet.addItems(["测试一", "测试二", "测试三", "测试四", "测试五"])
listsheet.itemSelectionChanged.connect(display)
window.show()
app.exec_()
QTableWidget
是表格控件,默认模型提供基于项目的表格视图,如下图所示
创建表格——需求已定
表格小部件为应用程序提供标准的表格显示,
QTableWidget
中的项目由
QTableWidgetItem
提供
如果你想要一个使用你自己的数据模型的表,你应该使用
QTableView
而不是这个类
表格小部件可以用所需数量的行和列来构建
tablewidget = QTableWidget(3, 2, window) # 前面的 3 是指的行数;2 是指列数
tablewidget = QTableWidget(3, 2, window)
tablewidget.setHorizontalHeaderLabels(("项目", "值")) # 设置水平标题
tablewidget.setVerticalHeaderLabels(["科目一", "科目二", "科目三"]) # 设置垂直标题
newitem = QTableWidgetItem("语文")
tablewidget.setItem(0, 0, newitem) # 前面的 0 代表 row ;后面的 0 代表 column
tablewidget.setItem(0, 0, QTableWidgetItem("语文"))
如果单元格
已经被设置过
文本内容;
item()
方法可以获取
指定位置
的 QTableWidgetItem ,再调用这个对象的
setText()
方法,就可以设置单元格文本内容
from PyQt5.QtWidgets import QTableWidgetItem
tablewidget.setItem(0, 0, QTableWidgetItem("语文"))
tablewidget.item(0, 0).setText("数学") # 这样就将原来的“语文”替换成“数学”
newitem = QTableWidgetItem("语文")
newitem.setFlags(Qt.ItemIsEnabled) # 名称字段不允许修改,默认是允许修改的
tablewidget.setItem(0, 0, newitem)
如果想文本内容 居中对齐,每个当对应的 QTableWidgetItem 调用
setTextAlignment
方法
from PyQt5.QtWidgets import QTableWidgetItem
from PyQt5.QtCore import Qt
newitem = QTableWidgetItem("语文")
newitem.setTextAlignment(Qt.AlignCenter) # 设置文本居中
tablewidget.setItem(0, 0, newitem)
def display():
currentrow = tablewidget.currentRow()
currentcolumn = tablewidget.currentColumn()
label.setText(f"行数是{currentrow},列数是{currentcolumn}")
label = QLabel(window)
label.resize(250, 50)
label.move(300, 50)
tablewidget = QTableWidget(3, 2, window)
tablewidget.move(12, 5)
tablewidget.setHorizontalHeaderLabels(("项目", "值"))
tablewidget.setVerticalHeaderLabels(["科目一", "科目二", "科目三"])
tablewidget.itemSelectionChanged.connect(display)
window.show()
app.exec_()
tablewidget.setColumnWidth(0, 100) # 设置第 1 列的宽度为 100像素
tablewidget.setColumnWidth(1, 50) # 设置第 2 列的宽度为 50像素
tablewidget.setRowHeight(0, 50) # 设置第 1 行的高度为 50像素
tablewidget.setRowHeight(1, 80) # 设置第 2 行的高度未 80像素
让 表格控件宽度 随着父窗口的缩放自动缩放,使用下面代码
tablewidget.horizontalHeader().setStretchLastSection(True)
信号:单元格内容改动
当用户修改了一个单元格的内容,会发出
cellChanged
信号,
并且携带参数指明该单元格的行号和列号
from PyQt5.Qt import *
from PyQt5.QtWidgets import QTableWidgetItem
app = QApplication([])
window = QWidget()
window.resize(500, 250)
window.move(300, 300)
def display(row, column):
value = tablewidget.item(row, column).text()
label.setText(f"修改值为:{value}")
label = QLabel(window)
label.resize(200, 30)
label.move(300, 50)
tablewidget = QTableWidget(3, 2, window)
tablewidget.move(12, 5)
tablewidget.setHorizontalHeaderLabels(("项目", "值"))
tablewidget.setVerticalHeaderLabels(["科目一", "科目二", "科目三"])
tablewidget.cellChanged.connect(display)
window.show()
app.exec_()