Noodzakelijke methoden
De QTableWidget klasse bevat veel methoden om taken uit te voeren die verband houden met het maken van tabellen. Enkele van de meest gebruikte methoden van deze klasse worden hieronder uitgelegd:
Methode Naam: | Doel |
---|---|
setRijCount() | Gebruikt om het aantal rijen te definiëren. |
setColumnCount() | Gebruikt om het aantal kolommen te definiëren. |
setHorizontalHeaderLabels() | Wordt gebruikt om de koplabels van de tabel in te stellen. |
setItem() | Wordt gebruikt om de celwaarde van de tabel in te stellen. |
resizeColumnsToContents() | Wordt gebruikt om de grootte van de kolommen van de tabel te wijzigen op basis van de inhoud. |
resizeRowsToContents() | Wordt gebruikt om het formaat van de rijen van de tabel te wijzigen op basis van de inhoud. |
setMinimumBreedte() | Wordt gebruikt om de minimale breedte van de tafel in te stellen. |
setMinimumHoogte() | Wordt gebruikt om de minimale hoogte van de tafel in te stellen. |
tonen() | Wordt gebruikt om de tafel weer te geven. |
QTableWidget-gebruik
De volgende secties bieden eenvoudige voorbeelden om uit te leggen hoe u een tabel in de PyQt-toepassing maakt met behulp van statische gegevens en lijstgegevens.
Voorbeeld 1: Maak een eenvoudige tabel met statische gegevens
Het volgende script maakt een tabel met statische gegevens met vijf rijen en vier kolommen met behulp van de QTableWidget klasse. Twee voor lussen met bereikwaarden zijn in het script gebruikt om de statische gegevens aan de tabelcellen toe te voegen. De rij- en kolomposities van elke cel zijn toegevoegd als de inhoud van elke cel. De QDesktopWidget wordt in het script gebruikt om het venster met de tabel in het midden van het scherm weer te geven.
# Importeer benodigde bibliothekenimport systeem
van PyQt5.QtWidgets importeren QApplication, QMainWindow, QTableWidget, QTableWidgetItem, QDesktopWidget
van PyQt5.QtCore import QSize
# Definieer klasse om de tabel met statische gegevens te maken
klasse SimpleTable(QMainWindow):
def __init__(zelf):
# Bel de bovenliggende constructor
super().__in het__()
# Stel de grootte en titel van het venster in
zelf.setMinimumSize(QSize(420, 150))
zelf.setWindowTitle("Eenvoudige tabel met statische gegevens")
# Maak de tabel met de benodigde eigenschappen
table = QTableWidget(zelf)
tafel.setColumnCount(4)
tafel.setRowCount(5)
tafel.setMinimumBreedte(500)
tafel.setMinimumHoogte(500)
# Stel de tabelkoppen in
tafel.setHorizontalHeaderLabels(["Header-1", "Header-2", "Header-3", "Header-4"])
# Stel de tabelwaarden in
voor i binnen bereik (5):
voor j in bereik (4) :
tafel.setItem(i, j, QTableWidgetItem("Rij-" + str(i+1) + " , Col-" + str(j+1)))
# Wijzig de grootte van de rijen en kolommen op basis van de inhoud
tafel.resizeColumnsToContents()
tafel.resizeRowsToContents()
# Toon de tafel
tafel.tonen()
# Geef het venster in het midden van het scherm weer
winnen = zelf.frameGeometrie()
pos = QDesktopWidget().beschikbaar Geometrie().centrum()
winnen.moveCenter(pos)
zelf.bewegen (winnen).linksboven())
zelf.tonen()
# Maak een app-object en voer de app uit
app = QApplicatie(sys.argv)
mw = EenvoudigeTabel()
mw.tonen()
app.exec()
Het volgende venster met een tabel zal verschijnen, het bovenstaande script wordt uitgevoerd. Volgens de waarden van de voor loops, de celwaarde van de eerste rij en de eerste kolom is 'Rij-1, Col-1,' en de celwaarde van de laatste rij en laatste kolom is 'Rij-5, Col-4.'
Voorbeeld 2: Tabel maken met knopinfo met behulp van woordenboek- en lijstgegevens
Het volgende script maakt een tabel met de inhoud van een Python-woordenboek en lijst met behulp van de QTableWidget klasse. Het script voegt ook een tooltiptekst toe voor de tabelkop. Een Python-woordenboek met de naam merken wordt ook gedeclareerd in het script. De cursuscodes worden gebruikt als de belangrijkste waarden van het woordenboek. Er wordt een Python-lijst gedeclareerd om de student-ID's te definiëren. De sleutelwaarden van het woordenboek worden toegevoegd aan de kop van de tabel, de waarden van de lijst worden toegevoegd aan de eerste kolom van de tabel en de waarden van het woordenboek worden toegevoegd aan de andere kolommen van de tabel.
# Importeer benodigde modulesimport systeem
van PyQt5.QtWidgets importeren QApplication, QTableWidget, QTableWidgetItem, QDesktopWidget
# Declareer een woordenboekvariabele met tekens
cijfers = '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__(zelf, data, *args):
# Roep bovenliggende constructor
QTableWidget.__init__(zelf, *args)
# Declareer een lijst van de studenten-ID's
zelf.ID_list = ['0189945', '0154590', '0196734', '0185611', '0178956']
# Stel de benodigde configuraties voor de tafel in
zelf.gegevens = gegevens
zelf.resizeColumnsToContents()
zelf.resizeRowsToContents()
zelf.setColumnWidth(0, 100)
voor i in bereik (4):
zelf.setColumnWidth(i, 80)
zelf.setMinimumBreedte(400)
zelf.setWindowTitle("Blad markeren")
# Declareer de variabele om de koptekstinhoud in te stellen
kopteksten = []
kopteksten.toevoegen(")
# for loop om de sleutels van het woordenboek te lezen
voor n, toets enumerate(sorted(self).gegevens.sleutels())):
kopteksten.toevoegen (sleutel)
# for loop om de waarden van het woordenboek te lezen
voor m, item in enumerate(self.gegevens[sleutel]):
ID = QTableWidgetItem (zelf.ID_list[m])
zelf.setItem (m, 0, ID)
newVal = QTableWidgetItem(str(item))
zelf.setItem(m, n+1, newVal)
# Stel het koplabel van de tabel in
zelf.setHorizontalHeaderLabels(headers)
# Stel de tooltips voor de headers in
zelf.horizontaalHeaderItem(1).setToolTip("Multimedia")
zelf.horizontaalHeaderItem(2).setToolTip("Kunstmatig Intelligent")
zelf.horizontaalHeaderItem(3).setToolTip("Geavanceerde database")
zelf.horizontaalHeaderItem(4).setToolTip("Unix-programmering")
# Lees de specifieke celwaarde
zelf.geklikt.verbinden (zelf).bij klikken)
# Geef het venster in het midden van het scherm weer
winnen = zelf.frameGeometrie()
pos = QDesktopWidget().beschikbaar Geometrie().centrum()
winnen.moveCenter(pos)
zelf.bewegen (winnen).linksboven())
zelf.tonen()
def on_click(zelf):
voor ItemVal in zelf.geselecteerde voorwerpen():
# Lees de koptekstwaarde op basis van de geselecteerde cel
onderwerp = zelf.horizontalHeaderItem(ItemVal.kolom()).tekst()
# Druk de detailinformatie van het merk af
print("\n", zelf.ID_list[ItemVal.row()], " got ", ItemVal.tekst(), " in ", onderwerp)
# Maak een app-object en voer de app uit
app = QApplicatie(sys.argv)
table = TableFromList(markeringen, 5, 5)
tafel.tonen()
app.exec()
Het volgende venster met de tabel zal verschijnen nadat het bovenstaande script is uitgevoerd.
Conclusie
Deze tutorial liet je zien hoe je tabellen kunt maken met vaste gegevens, woordenboekgegevens en lijstgegevens aan de hand van twee voorbeelden. Tabellen kunnen ook worden gemaakt met dynamische gegevens met behulp van databasetabellen of andere gegevensbronnen.