Python

Hvordan bruke PyQt QTableWidget

Hvordan bruke PyQt QTableWidget
En tabell brukes til å vise data i et strukturert format, i henhold til rader og kolonner. De QTableWidget klasse av PyQt kan brukes i Python for å vise data i tabellform for oppgaver relatert til forskning eller dataanalyse. Innholdet i tabellen kan genereres fra forskjellige typer lagring, for eksempel todimensjonale lister eller tabeller, databasetabeller, JSON-filer osv.  En eller flere tabeller kan opprettes ved hjelp av QTableWidget i PyQt-applikasjonen. Denne veiledningen viser hvordan du bruker QTableWidget for å lage forskjellige typer bord ved hjelp av Python-skript.

Nødvendige metoder

De QTableWidget klasse inneholder mange metoder for å utføre oppgaver knyttet til tabelloppretting. Noen av de mest brukte metodene i denne klassen er forklart nedenfor:

Metodenavn Hensikt
setRowCount () Brukes til å definere antall rader.
setColumnCount () Brukes til å definere antall kolonner.
setHorizontalHeaderLabels () Brukes til å sette topptekstetikettene på tabellen.
setItem () Brukes til å angi celleverdien til tabellen.
endre størrelseColumnsToContents () Brukes til å endre størrelse på kolonnene i tabellen basert på innholdet.
resizeRowsToContents () Brukes til å endre størrelse på radene i tabellen basert på innholdet.
setMinimumWidth () Brukes til å stille inn minimumsbredden på bordet.
setMinimumHeight () Brukes til å stille inn minimumshøyden på bordet.
vise fram() Brukes til å vise bordet.

QTableWidget-bruk

De følgende avsnittene gir enkle eksempler for å forklare hvordan du lager en tabell i PyQt-applikasjonen ved hjelp av statiske data og lister.

Eksempel 1: Lag enkel tabell ved bruk av statiske data

Følgende skript oppretter en tabell med statiske data med fem rader og fire kolonner ved hjelp av QTableWidget klasse. To til sløyfer med rekkeviddeverdier har blitt brukt i skriptet for å legge til de statiske dataene i tabellcellene. Rad- og kolonneposisjonene til hver celle er lagt til som innholdet i hver celle. De QDesktopWidget brukes i skriptet for å vise vinduet med tabellen i midten av skjermen.

# Importer nødvendige biblioteker
importer sys
fra PyQt5.QtWidgets importerer QApplication, QMainWindow, QTableWidget, QTableWidgetItem, QDesktopWidget
fra PyQt5.QtCore importerer QSize
# Definer klasse for å lage tabellen med statiske data
klasse SimpleTable (QMainWindow):
def __init __ (selv):
# Ring foreldrekonstruktøren
super().__i det__()
# Still inn størrelsen og tittelen på vinduet
selv-.setMinimumSize (QSize (420, 150))
selv-.setWindowTitle ("Enkel tabell med statiske data")
# Lag tabellen med nødvendige egenskaper
tabell = QTableWidget (selv)
bord.setColumnCount (4)
bord.setRowCount (5)
bord.setMinimumWidth (500)
bord.setMinimumHeight (500)
# Sett topptekstene til bordet
bord.setHorizontalHeaderLabels (["Header-1", "Header-2", "Header-3", "Header-4"])
# Still inn tabellverdiene
for jeg innen rekkevidde (5):
for j i rekkevidde (4):
bord.setItem (i, j, QTableWidgetItem ("Row-" + str (i + 1) + ", Col-" + str (j + 1)))
# Endre størrelse på radene og kolonnene basert på innholdet
bord.endre størrelseColumnsToContents ()
bord.resizeRowsToContents ()
# Vis tabellen
bord.vise fram()
# Vis vinduet midt på skjermen
vinne = selvtillit.frameGeometry ()
pos = QDesktopWidget ().tilgjengeligGeometri ().senter()
vinne.moveCenter (pos)
selv-.flytte (vinne.øverst til venstre())
selv-.vise fram()
# Opprett appobjekt og kjør appen
app = QApplication (sys.argv)
mw = SimpleTable ()
mw.vise fram()
app.utføre ()

Følgende vindu med en tabell vises. Ovenstående skript blir utført. I henhold til verdiene til til sløyfer, celleverdien til den første raden og den første kolonnen er 'Rad 1, Kol-1,'og celleverdien til siste rad og siste kolonne er'Rad 5, Kol-4.'

Eksempel 2: Opprett tabell med verktøytips ved bruk av ordbok- og listedata

Følgende skript oppretter en tabell med innholdet i en Python-ordbok og en liste ved hjelp av QTableWidget klasse. Skriptet legger også til en verktøytipstekst for tabelloverskriften. En Python-ordbok med navn merker er også erklært i manuset. Kursene brukes som nøkkelverdier i ordboken. En Python-liste blir erklært for å definere student-IDene. Nøkkelverdiene i ordboken legges til toppteksten i tabellen, verdiene i listen legges til den første kolonnen i tabellen, og verdiene i ordboken legges til de andre kolonnene i tabellen.

# Importer nødvendige moduler
importer sys
fra PyQt5.QtWidgets importerer QApplication, QTableWidget, QTableWidgetItem, QDesktopWidget
# Erklær en ordbokvariabel med merker
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 foreldrekonstruktør
QTableWidget.__init __ (selv, * args)
# Deklarer en liste over student-IDS
selv-.ID_list = ['0189945', '0154590', '0196734', '0185611', '0178956']
# Still inn de nødvendige konfigurasjonene for tabellen
selv-.data = data
selv-.endre størrelseColumnsToContents ()
selv-.resizeRowsToContents ()
selv-.setColumnWidth (0, 100)
for jeg innen rekkevidde (4):
selv-.setColumnWidth (i, 80)
selv-.setMinimumWidth (400)
selv-.setWindowTitle ("Mark Sheet")
# Erklær variabelen for å angi topptekstinnholdet
topptekster = []
topptekster.legg til (")
# for loop for å lese tastene til ordboken
for n, tast inn enumerate (sortert (selv.data.nøkler ())):
topptekster.legge til (nøkkel)
# for loop for å lese verdiene i ordboken
for m, element i enumerate (selv.data [nøkkel]):
ID = QTableWidgetItem (selvtill.ID_liste [m])
selv-.setItem (m, 0, ID)
newVal = QTableWidgetItem (str (element))
selv-.setItem (m, n + 1, newVal)
# Sett toppteksten på tabellen
selv-.setHorizontalHeaderLabels (headers)
# Angi verktøytipsene for topptekstene
selv-.horizontalHeaderItem (1).setToolTip ("Multimedia")
selv-.horizontalHeaderItem (2).setToolTip ("Artificial Intelligent")
selv-.horizontalHeaderItem (3).setToolTip ("Advanced Database")
selv-.horizontalHeaderItem (4).setToolTip ("Unix Programming")
# Les den spesielle celleverdien
selv-.klikket.koble (selv.ved trykk)
# Vis vinduet midt på skjermen
vinne = selvtillit.frameGeometry ()
pos = QDesktopWidget ().tilgjengeligGeometri ().senter()
vinne.moveCenter (pos)
selv-.flytte (vinne.øverst til venstre())
selv-.vise fram()
def on_click (selv):
for ItemVal i seg selv.selectedItems ():
# Les toppverdien basert på den valgte cellen
subjekt = selvtillit.horizontalHeaderItem (ItemVal.kolonne()).tekst()
# Skriv ut detaljinformasjonen til merket
print ("\ n", selvtill.ID_list [ItemVal.rad ()], "fikk", ItemVal.tekst (), "in", emne)
# Opprett appobjekt og kjør appen
app = QApplication (sys.argv)
tabell = TableFromList (merker, 5, 5)
bord.vise fram()
app.utføre ()

Følgende vindu med tabellen vises etter at skriptet ovenfor er utført.

Konklusjon

Denne veiledningen viste deg hvordan du lager tabeller med faste data, ordboksdata og lister data ved hjelp av to eksempler. Tabeller kan også opprettes med dynamiske data ved hjelp av databasetabeller eller andre datakilder.

Beste spill å spille med håndsporing
Oculus Quest introduserte nylig den gode ideen om håndsporing uten kontrollere. Med et stadig økende antall spill og aktiviteter som utfører støtte en...
Hvordan vise OSD-overlegg i fullskjerm Linux-apper og spill
Å spille fullskjermspill eller bruke apper i distraksjonsfri fullskjermmodus kan avskrekke deg fra relevant systeminformasjon som er synlig i et panel...
Topp 5 spillfangstkort
Vi har alle sett og elsket streaming av spill på YouTube. PewDiePie, Jakesepticye og Markiplier er bare noen av de beste spillerne som har tjent milli...