Nødvendige metoder
Det QTableWidget klasse indeholder mange metoder til at udføre opgaver i forbindelse med oprettelse af tabeller. Nogle af de mere almindeligt anvendte metoder i denne klasse forklares nedenfor:
Metodenavn | Formål |
---|---|
setRowCount () | Bruges til at definere antallet af rækker. |
setColumnCount () | Bruges til at definere antallet af kolonner. |
setHorizontalHeaderLabels () | Bruges til at indstille overskriftens etiketter i tabellen. |
setItem () | Bruges til at indstille celleværdien i tabellen. |
resizeColumnsToContents () | Bruges til at ændre størrelsen på kolonnerne i tabellen baseret på indholdet. |
resizeRowsToContents () | Bruges til at ændre størrelsen på rækkerne i tabellen baseret på indholdet. |
setMinimumWidth () | Bruges til at indstille bordets mindste bredde. |
setMinimumHøjde () | Bruges til at indstille bordets mindste højde. |
at vise() | Bruges til at vise bordet. |
QTableWidget-brug
De følgende afsnit giver enkle eksempler til at forklare, hvordan du opretter en tabel i PyQt-applikationen ved hjælp af statiske data og lister.
Eksempel 1: Opret enkel tabel ved hjælp af statiske data
Følgende script opretter en tabel med statiske data med fem rækker og fire kolonner ved hjælp af QTableWidget klasse. To til sløjfer med intervalværdier er blevet brugt i scriptet til at tilføje de statiske data i tabelcellerne. Række- og søjlepositionerne for hver celle er tilføjet som indholdet af hver celle. Det QDesktopWidget bruges i scriptet til at vise vinduet med tabellen i midten af skærmen.
# Importer nødvendige bibliotekerimporter sys
fra PyQt5.QtWidgets importerer QApplication, QMainWindow, QTableWidget, QTableWidgetItem, QDesktopWidget
fra PyQt5.QtCore importerer QSize
# Definer klasse for at oprette tabellen med statiske data
klasse SimpleTable (QMainWindow):
def __init __ (selv):
# Ring til forældrekonstruktøren
super().__i det__()
# Indstil størrelsen og titlen på vinduet
selv.setMinimumSize (QSize (420, 150))
selv.setWindowTitle ("Enkel tabel med statiske data")
# Opret tabellen med nødvendige egenskaber
tabel = QTableWidget (selv)
bord.setColumnCount (4)
bord.setRowCount (5)
bord.setMinimumWidth (500)
bord.setMinimumHøjde (500)
# Indstil tabeloverskrifterne
bord.setHorizontalHeaderLabels (["Header-1", "Header-2", "Header-3", "Header-4"])
# Indstil tabelværdierne
for jeg inden for rækkevidde (5):
for j inden for rækkevidde (4):
bord.setItem (i, j, QTableWidgetItem ("Row-" + str (i + 1) + ", Col-" + str (j + 1)))
# Ændr størrelse på rækkerne og kolonnerne baseret på indholdet
bord.resizeColumnsToContents ()
bord.resizeRowsToContents ()
# Vis tabellen
bord.at vise()
# Vis vinduet i midten af skærmen
vinde = selv.frameGeometry ()
pos = QDesktopWidget ().tilgængeligGeometri ().centrum()
vinde.moveCenter (pos)
selv.flytte (vinde.øverst til venstre())
selv.at vise()
# Opret app-objekt og udfør appen
app = QApplication (sys.argv)
mw = SimpleTable ()
mw.at vise()
app.udføre ()
Følgende vindue med en tabel vises, ovenstående script udføres. I henhold til værdierne i til sløjfer, celleværdien i den første række og den første kolonne er 'Række-1, kol-1,'og celleværdien i den sidste række og sidste kolonne er'Række-5, kol-4.''
Eksempel 2: Opret tabel med værktøjstip ved hjælp af ordbog og listerdata
Det følgende script opretter en tabel med indholdet af en Python-ordbog og en liste ved hjælp af QTableWidget klasse. Scriptet tilføjer også en værktøjstipstekst til tabeloverskriften. En Python-ordbog med navnet mærker er også erklæret i scriptet. Kursuskoderne bruges som nøgleværdier i ordbogen. En Python-liste erklæres for at definere studerende-id'erne. Nøgleværdierne i ordbogen føjes til overskriften på tabellen, værdierne på listen føjes til den første kolonne i tabellen, og værdierne i ordbogen føjes til de andre kolonner i tabellen.
# Importer nødvendige modulerimporter sys
fra PyQt5.QtWidgets importerer QApplication, QTableWidget, QTableWidgetItem, QDesktopWidget
# Erklær en ordbogvariabel med markeringer
marks = '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 __ (selv, data, * args):
# Ring til forældrekonstruktør
QTableWidget.__init __ (selv, * args)
# Erklær en liste over studerende IDS
selv.ID_list = ['0189945', '0154590', '0196734', '0185611', '0178956']
# Indstil de nødvendige konfigurationer til bordet
selv.data = data
selv.resizeColumnsToContents ()
selv.resizeRowsToContents ()
selv.setColumnWidth (0, 100)
for jeg inden for rækkevidde (4):
selv.setColumnWidth (i, 80)
selv.setMinimumWidth (400)
selv.setWindowTitle ("Mark Sheet")
# Erklær variablen for at indstille overskriftens indhold
overskrifter = []
overskrifter.Tilføj(")
# for loop for at læse nøglerne til ordbogen
for n, indtast opregne (sorteret (selv.data.nøgler ())):
overskrifter.tilføje (nøgle)
# for loop for at læse værdierne i ordbogen
for m, element i enumerate (selv.data [nøgle]):
ID = QTableWidgetItem (selv.ID_liste [m])
selv.setItem (m, 0, ID)
newVal = QTableWidgetItem (str (element))
selv.setItem (m, n + 1, newVal)
# Indstil overskriftens etiket på tabellen
selv.setHorizontalHeaderLabels (headers)
# Indstil værktøjstip til overskrifterne
selv.vandretHeaderItem (1).setToolTip ("Multimedia")
selv.vandretHeaderItem (2).setToolTip ("Kunstig intelligent")
selv.vandretHeaderItem (3).setToolTip ("Avanceret database")
selv.vandretHeaderItem (4).setToolTip ("Unix-programmering")
# Læs den specifikke celleværdi
selv.klikkede.forbinde (selv.on_click)
# Vis vinduet i midten af skærmen
vinde = selv.frameGeometry ()
pos = QDesktopWidget ().tilgængeligGeometri ().centrum()
vinde.moveCenter (pos)
selv.flytte (vinde.øverst til venstre())
selv.at vise()
def on_click (selv):
til ItemVal i sig selv.selectedItems ():
# Læs overskudsværdien baseret på den valgte celle
emne = selv.horizontalHeaderItem (ItemVal.kolonne()).tekst()
# Udskriv detaljerede oplysninger om mærket
print ("\ n", selv.ID_list [ItemVal.række ()], "fik", ItemVal.tekst (), "in", emne)
# Opret app-objekt og udfør appen
app = QApplication (sys.argv)
tabel = TableFromList (mærker, 5, 5)
bord.at vise()
app.udføre ()
Det følgende vindue med tabellen vises, når ovenstående script er udført.
Konklusion
Denne tutorial viste dig, hvordan du opretter tabeller med faste data, ordbogsdata og lister data ved hjælp af to eksempler. Tabeller kan også oprettes med dynamiske data ved hjælp af databasetabeller eller andre datakilder.