Python

So verwenden Sie PyQt QTableWidget

So verwenden Sie PyQt QTableWidget
Eine Tabelle wird verwendet, um Daten in einem strukturierten Format nach Zeilen und Spalten anzuzeigen. Das QTableWidget Klasse von PyQt kann in Python verwendet werden, um Daten in tabellarischer Form für Aufgaben im Zusammenhang mit Forschung oder Datenanalyse anzuzeigen. Der Inhalt der Tabelle kann aus verschiedenen Speicherarten generiert werden, wie z. B. zweidimensionale Listen oder Tabellen, Datenbanktabellen, JSON-Dateien usw.  Eine oder mehrere Tabellen können erstellt werden mit QTableWidget in der PyQt-Anwendung. Dieses Tutorial zeigt die Verwendung QTableWidget um verschiedene Arten von Tabellen mit Python-Skript zu erstellen.

Notwendige Methoden

Das QTableWidget -Klasse enthält viele Methoden zum Ausführen von Aufgaben im Zusammenhang mit der Tabellenerstellung. Einige der am häufigsten verwendeten Methoden dieser Klasse werden im Folgenden erläutert:

Methodenname Zweck
setRowCount() Wird verwendet, um die Anzahl der Zeilen zu definieren.
setColumnCount() Wird verwendet, um die Anzahl der Spalten zu definieren.
setHorizontalHeaderLabels() Wird verwendet, um die Kopfzeilenbeschriftungen der Tabelle festzulegen.
setItem() Wird verwendet, um den Zellenwert der Tabelle festzulegen.
resizeColumnsToContents() Wird verwendet, um die Größe der Spalten der Tabelle basierend auf dem Inhalt zu ändern.
resizeRowsToContents() Wird verwendet, um die Größe der Tabellenzeilen basierend auf dem Inhalt zu ändern.
setMinimumWidth() Wird verwendet, um die minimale Breite des Tisches einzustellen.
setMinimumHeight() Wird verwendet, um die Mindesthöhe des Tisches einzustellen.
Show() Wird verwendet, um die Tabelle anzuzeigen.

QTableWidget-Nutzung

Die folgenden Abschnitte enthalten einfache Beispiele, um zu erklären, wie eine Tabelle in der PyQt-Anwendung mit statischen Daten und Listendaten erstellt wird.

Beispiel 1: Erstellen einer einfachen Tabelle mit statischen Daten

Das folgende Skript erstellt eine Tabelle mit statischen Daten mit fünf Zeilen und vier Spalten unter Verwendung der QTableWidget Klasse. Zwei zum Schleifen mit Bereichswerten wurden im Skript verwendet, um die statischen Daten in die Tabellenzellen einzufügen. Die Zeilen- und Spaltenpositionen jeder Zelle wurden als Inhalt jeder Zelle hinzugefügt. Das QDesktopWidget wird im Skript verwendet, um das Fenster mit der Tabelle in der Mitte des Bildschirms anzuzeigen.

# Importieren Sie die erforderlichen Bibliotheken
Importsystem
von PyQt5.QtWidgets importieren QApplication, QMainWindow, QTableWidget, QTableWidgetItem, QDesktopWidget
von PyQt5.QtCore-Import QSize
# Klasse definieren, um die Tabelle mit statischen Daten zu erstellen
Klasse SimpleTable(QMainWindow):
def __init__(selbst):
# Rufen Sie den übergeordneten Konstruktor auf
Super().__drin__()
# Stellen Sie die Größe und den Titel des Fensters ein
selbst.setMinimumSize(QSize(420, 150))
selbst.setWindowTitle("Einfache Tabelle mit statischen Daten")
# Erstellen Sie die Tabelle mit den erforderlichen Eigenschaften
Tabelle = QTableWidget(selbst)
Tabelle.setColumnCount(4)
Tabelle.setRowCount(5)
Tabelle.setMinimumWidth(500)
Tabelle.setMinimumHeight(500)
# Legen Sie die Tabellenüberschriften fest
Tabelle.setHorizontalHeaderLabels(["Header-1", "Header-2", "Header-3", "Header-4"])
# Tabellenwerte einstellen
für i im Bereich (5):
für j im Bereich (4) :
Tabelle.setItem(i, j, QTableWidgetItem("Row-" + str(i+1) + " , Col-" + str(j+1)))
# Größenänderung der Zeilen und Spalten basierend auf dem Inhalt
Tabelle.resizeColumnsToContents()
Tabelle.resizeRowsToContents()
# Zeigen Sie die Tabelle an
Tabelle.Show()
# Zeigen Sie das Fenster in der Mitte des Bildschirms an
gewinnen = selbst.frameGeometry()
pos = QDesktopWidget().verfügbarGeometrie().Center()
Sieg.moveCenter(pos)
selbst.bewegen (gewinnen).oben links())
selbst.Show()
# App-Objekt erstellen und App ausführen
app = QApplication(sys.Argument)
mw = SimpleTable()
mw.Show()
App.exec()

Das folgende Fenster mit einer Tabelle erscheint das obige Skript wird ausgeführt. Nach den Werten der zum Schleifen, der Zellenwert der ersten Zeile und der ersten Spalte ist 'Reihe-1, Spalte-1,' und der Zellenwert der letzten Zeile und letzten Spalte ist 'Reihe-5, Spalte-4.'

Beispiel 2: Tabelle mit Tool-Tipp mit Wörterbuch- und Listendaten erstellen

Das folgende Skript erstellt eine Tabelle mit dem Inhalt eines Python-Wörterbuchs und einer Liste mit dem QTableWidget Klasse. Das Skript fügt auch einen Tooltip-Text für den Tabellenkopf hinzu. Ein Python-Wörterbuch namens Marken wird auch im Skript deklariert. Die Kurscodes werden als Schlüsselwerte des Wörterbuchs verwendet. Eine Python-Liste wird deklariert, um die Studenten-IDs zu definieren. Die Schlüsselwerte des Wörterbuchs werden in die Kopfzeile der Tabelle eingefügt, die Werte der Liste werden in die erste Spalte der Tabelle eingefügt und die Werte des Wörterbuchs werden in die anderen Spalten der Tabelle eingefügt.

# Erforderliche Module importieren
Importsystem
von PyQt5.QtWidgets importieren QApplication, QTableWidget, QTableWidgetItem, QDesktopWidget
# Deklarieren Sie eine Wörterbuchvariable mit Markierungen
Markierungen = 'CSE-401': [78, 93, 67, 88, 78],
„CSE-404“: [90, 59, 82, 73, 89],
'CSE-406': [81, 80, 74, 83, 67],
'CSE-407': [81, 80, 98, 83, 72]
Klasse TableFromList(QTableWidget):
def __init__(self, data, *args):
# Elternkonstruktor aufrufen
QTableWidget.__init__(selbst, *args)
# Deklarieren Sie eine Liste der Schüler-IDS
selbst.ID_list = ['0189945', '0154590', '0196734', '0185611', '0178956']
# Legen Sie die erforderlichen Konfigurationen für die Tabelle fest
selbst.Daten = Daten
selbst.resizeColumnsToContents()
selbst.resizeRowsToContents()
selbst.setColumnWidth(0, 100)
für i im Bereich (4):
selbst.setColumnWidth(i, 80)
selbst.setMinimumWidth(400)
selbst.setWindowTitle("Blatt markieren")
# Deklarieren Sie die Variable, um den Header-Inhalt festzulegen
Überschriften = []
Überschriften.anhängen(")
# for-Schleife zum Lesen der Schlüssel des Wörterbuchs
für n geben Sie enumerate(sorted(self.Daten.Schlüssel())):
Überschriften.anhängen (Schlüssel)
# for-Schleife, um die Werte des Wörterbuchs zu lesen
for m, item in enumerate(self.Daten[Schlüssel]):
ID = QTableWidgetItem(self.ID_Liste[m])
selbst.setItem(m, 0, ID)
newVal = QTableWidgetItem(str(item))
selbst.setItem(m, n+1, newVal)
# Setze die Kopfzeile der Tabelle
selbst.setHorizontalHeaderLabels(header)
# Legen Sie die Tooltips für die Kopfzeilen fest
selbst.horizontalHeaderItem(1).setToolTip("Multimedia")
selbst.horizontalHeaderItem(2).setToolTip("Künstliche Intelligenz")
selbst.horizontalHeaderItem(3).setToolTip("Erweiterte Datenbank")
selbst.horizontalHeaderItem(4).setToolTip("Unix-Programmierung")
# Lesen Sie den jeweiligen Zellenwert aus
selbst.angeklickt.verbinden (selbst.on_click)
# Zeigen Sie das Fenster in der Mitte des Bildschirms an
gewinnen = selbst.frameGeometry()
pos = QDesktopWidget().verfügbarGeometrie().Center()
Sieg.moveCenter(pos)
selbst.bewegen (gewinnen.oben links())
selbst.Show()
def on_click(self):
für ItemVal in self.ausgewählte Gegenstände():
# Lesen Sie den Header-Wert basierend auf der ausgewählten Zelle
Betreff = selbst.horizontalHeaderItem(ItemVal.Säule()).Text()
# Drucken Sie die Detailinformationen der Marke
print("\n", selbst.ID_list[ItemVal.row()], " got ", ItemVal.text(), "in", Betreff)
# App-Objekt erstellen und App ausführen
app = QApplication(sys.Argument)
table = TableFromList(Markierungen, 5, 5)
Tabelle.Show()
App.exec()

Das folgende Fenster mit der Tabelle erscheint, nachdem das obige Skript ausgeführt wurde.

Fazit

In diesem Tutorial wurde anhand von zwei Beispielen gezeigt, wie Sie Tabellen mit festen Daten, Wörterbuchdaten und Listendaten erstellen. Tabellen können auch mit dynamischen Daten mithilfe von Datenbanktabellen oder anderen Datenquellen erstellt werden.

So installieren Sie League of Legends auf Ubuntu 14.04
Wenn Sie ein Fan von League of Legends sind, dann ist dies eine Gelegenheit für Sie, League of Legends zu testen. Beachten Sie, dass LOL von PlayOnLin...
Installieren Sie das neueste OpenRA-Strategiespiel auf Ubuntu Linux
OpenRA ist eine Libre/Free Real Time Strategy Game Engine, die die frühen Westwood-Spiele wie den Klassiker Command & Conquer: Red Alert Red nachbilde...
Installieren Sie den neuesten Dolphin Emulator für Gamecube & Wii unter Linux
Mit dem Dolphin Emulator können Sie Ihre ausgewählten Gamecube- und Wii-Spiele auf Linux-Personalcomputern (PC) spielen. Als frei verfügbarer Open-So...