Ich habe eine Qtablewidget mit 3 Spalten. Die erste Spalte enthält Benutzernamen, die zweite und dritte Spalte sind Kontrollkästchen. Ich möchte, dass diese Kontrollkästchen Attribute für die Benutzerzeile sind. Zum Beispiel, wenn Sie auf das Bild unten schauen, Benutzer: Bruno ist markiert (hat Attribute) löschen und löschen nach Hause. Ich hätte gerne eine Ausgabe wie: User Bruno marked for delete, marked for delete home
. Um dies zu tun, müsste ich die Benutzer mit diesen beiden Spalten verknüpfen, von denen ich nicht die geringste Ahnung habe. Wie soll ich dieses Problem angehen? Unten ist der Code, den ich bereits gefunden habe. Er füllt die Benutzerspalte aus einer Datei.Wie verknüpfe ich bestimmte Zeilen mit Spalten in einem Qtablewidget
von PyQt4 Import QtGui, QtCore
class Window(QtGui.QWidget):
def __init__(self, rows, columns):
QtGui.QWidget.__init__(self)
self.table = QtGui.QTableWidget(rows, columns, self)
self.table.setHorizontalHeaderItem(0, QtGui.QTableWidgetItem("Users"))
self.table.setHorizontalHeaderItem(1, QtGui.QTableWidgetItem("Delete User"))
self.table.setHorizontalHeaderItem(2, QtGui.QTableWidgetItem("Delete User and Home"))
self.table.verticalHeader().hide()
header = self.table.horizontalHeader()
header.setStretchLastSection(True)
rowf = 0
with open("/home/test1/data/users") as in_file:
if in_file is not None:
users = in_file.readlines()
for line in users:
users = QtGui.QTableWidgetItem()
self.table.setItem(rowf, 0, users)
users.setText(line)
rowf+=1
in_file.close()
for column in range(columns):
for row in range(rows):
if column % 3:
item = QtGui.QTableWidgetItem(column)
item.setFlags(QtCore.Qt.ItemIsUserCheckable |
QtCore.Qt.ItemIsEnabled)
item.setCheckState(QtCore.Qt.Unchecked)
self.table.setItem(row, column, item)
self.table.itemClicked.connect(self.cell_was_clicked)
layout = QtGui.QVBoxLayout(self)
layout.addWidget(self.table)
self._list = []
def cell_was_clicked(self, item):
#row = self.table.currentItem().row()
#col = self.table.currentItem().column()
#print "item:", item
#print "row=", row
if item.checkState() == QtCore.Qt.Checked:
print('"%s" Checked' % item.text())
#self._list.append(item.row())
else:
#print "(", row , ",", col, ")"
print('%s' % item.text())
print (item.row(),item.column())
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
window = Window(200, 3)
window.resize(400, 400)
window.show()
sys.exit(app.exec_())
Auch wenn jemand weiß, wie Checkboxen innerhalb der Zellen zu zentrieren, das wäre toll. Vielen Dank. – answerSeeker