gpt4 book ai didi

python - 有没有办法检查 PyQt5 表中已选中哪些复选框

转载 作者:行者123 更新时间:2023-11-30 21:56:44 24 4
gpt4 key购买 nike

我正在尝试使用表格制作一个房间预订系统。在表中我有复选框,我希望这样当用户单击图书按钮时,程序会看到哪些复选框已被选中,以便它可以从表中删除这些复选框。

我通过 PyQt5 设计器创建了表格,表格的每个空间都有复选框,如下所示:

enter image description here

UI 文件代码有很多行,如下所示:

        item = QtWidgets.QTableWidgetItem()
item.setFlags(QtCore.Qt.ItemIsUserCheckable|QtCore.Qt.ItemIsEnabled)
item.setCheckState(QtCore.Qt.Unchecked)
self.tableWidget.setItem(0, 0, item)
item = QtWidgets.QTableWidgetItem()
item.setFlags(QtCore.Qt.ItemIsUserCheckable|QtCore.Qt.ItemIsEnabled)
item.setCheckState(QtCore.Qt.Unchecked)
self.tableWidget.setItem(0, 1, item)

这是否意味着复选框都称为 item ?有没有办法可以为每个复选框指定一个单独的名称?

抱歉,如果这看起来是一个基本问题 - 提前致谢

最佳答案

您必须迭代表格并检查每个项目的状态,使用过滤后的项目,您可以获取带有标签的行和列。

from PyQt5 import QtCore, QtGui, QtWidgets

class Widget(QtWidgets.QWidget):
def __init__(self, parent=None):
super(Widget, self).__init__(parent)
self.tableWidget = QtWidgets.QTableWidget(6, 5)
self.book_button = QtWidgets.QPushButton("Book")
self.book_button.clicked.connect(self.book_clicked)

lay = QtWidgets.QVBoxLayout(self)
lay.addWidget(self.tableWidget)
lay.addWidget(self.book_button)

self.tableWidget.setHorizontalHeaderLabels("P1 P2 P3 P4 P5 P6".split())
self.tableWidget.setVerticalHeaderLabels("C101 C214 C320 F04 E201".split())

for i in range(self.tableWidget.rowCount()):
for j in range(self.tableWidget.columnCount()):
item = QtWidgets.QTableWidgetItem()
item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable)
item.setCheckState(QtCore.Qt.Unchecked)
self.tableWidget.setItem(i, j, item)

@QtCore.pyqtSlot()
def book_clicked(self):
items = []
for i in range(self.tableWidget.rowCount()):
for j in range(self.tableWidget.columnCount()):
item = self.tableWidget.item(i, j)
if item.checkState() == QtCore.Qt.Checked:
items.append(item)

for it in items:
r = it.row()
c = it.column()
v, h = self.tableWidget.horizontalHeaderItem(c).text(), self.tableWidget.verticalHeaderItem(r).text()
print(h, v)

if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
w = Widget()
w.show()
sys.exit(app.exec_())

关于python - 有没有办法检查 PyQt5 表中已选中哪些复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55435611/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com