wie man eine Zelle in einem QTableWidget nur Lesen?
ich habe den folgenden code definieren der gui meiner app
class Ui (object):
def setupUi():
self.tableName = QtGui.QTableWidget(self.layoutWidget_20)
self.tableName.setObjectName(_fromUtf8("twHistoricoDisciplinas"))
self.tableName.setColumnCount(4)
self.tableName.setRowCount(3)
und den folgenden code in meine app
class MainWindow(QtGui.QMainWindow):
def __init__(self):
self.ui = Ui()
self.ui.setupUi(self)
self.createtable()
#creating a tw cell
def cell(self,var=""):
item = QtGui.QTableWidgetItem()
item.setText(var)
return item
def createtable(self):
rows = self.tableName.rowCount()
columns = self.tableName.columnCount()
for i in range(rows):
for j in range(columns):
item = self.cell("text")
self.ui.tableName.setItem(i, j, item)
Ich möchte in der Lage sein, das hinzufügen neuer Zeilen und Spalten und Bearbeiten Sie, aber ich wollen, sperren einige der Zellen. ( ich habe bereits code, erweitern Sie die Tabelle )
wie kann ich einige Zellen nur Lesen, während die anderen Lesen, schreiben?
ich fand diesen link Wie man eine Spalte in QTableWidget nur Lesen? eine Lösung für das problem in C++, python Lösung ähnlich ?
EDIT: Entfernt die Antwort von der post aufgeklebt und als Antwort
Es ist in der Regel sehr wenige differencies zwischen der c++ und python code mit Qt. Sie müssen nur passen Sie die syntax, und dieser Teil des Codes funktioniert wie ein Charme.
hat wirklich funktioniert wie ein Charme :), ich musste nur herausfinden, wo Sie deklariert wurden, die Fahnen, im neu in python und qt, dauert es einige Zeit, um sich daran zu gewöhnen
hat wirklich funktioniert wie ein Charme :), ich musste nur herausfinden, wo Sie deklariert wurden, die Fahnen, im neu in python und qt, dauert es einige Zeit, um sich daran zu gewöhnen
InformationsquelleAutor Rafael Rotelok | 2011-10-11
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Spielte ich ein wenig mit dem code, und Lesen Sie einige weitere Dokumentation
die Antwort auf das problem ist
Die Lösung ist die Zeile "item.setFlags(QtCore.Qt.ItemIsEnabled)", Sie verwenden es, um die cell-Eigenschaft, QtCore.Qt.ItemIsEnabled deaktiviert, so können Sie nicht wählen oder Bearbeiten Sie die Zelle
Können Sie ändern eine Anzahl von anderen Eigenschaften auf diese Weise wird zur Laufzeit pro documentarion auf http://doc.qt.io/archives/qt-4.8/qt.html unter der Rubrik Qt::ItemFlag
wie bereits erwähnt in einem Kommentar von Sven auf der zweiten Antwort auf diese Frage, wenn man eine Feste Anzahl von Zeilen und Spalten in Ihrer QTableWidgetItem können Sie die Eigenschaften der Zellen mit Qtdesigner, wenn Sie es verwenden, um die Bildschirme erstellen für Ihre Anwendung
InformationsquelleAutor Rafael Rotelok
Den Bearbeitungsstatus eines QTableWidgetItem ist noch nie eingetragen, auch wenn es keine Edit-Trigger:
self.tableName.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
Aber was ist, wenn ich die Möglichkeit haben möchten, für die Kopie, aber nicht Bearbeiten?
Sie können klicken Sie noch auf die Zellen zu markieren und drücken Sie dann "Strg + C". Der Inhalt der markierten Zelle in die Zwischenablage.
InformationsquelleAutor Sven Krüger
Wie Sven Krüger Antwort, Sie können auch verwenden Sie diese Methoden für PyQt5:
InformationsquelleAutor ozcanyarimdunya