Potrebne metode
The QTableWidget razred vključuje veliko metod za izvajanje nalog, povezanih z ustvarjanjem tabel. Nekatere najpogosteje uporabljene metode tega razreda so razložene spodaj:
Ime metode | Namen |
---|---|
setRowCount () | Uporablja se za določanje števila vrstic. |
setColumnCount () | Uporablja se za določanje števila stolpcev. |
setHorizontalHeaderLabels () | Uporablja se za nastavitev nalepk glave tabele. |
setItem () | Uporablja se za nastavitev vrednosti celice tabele. |
resizeColumnsToContents () | Uporablja se za spreminjanje velikosti stolpcev tabele glede na vsebino. |
resizeRowsToContents () | Uporablja se za spreminjanje velikosti vrstic tabele glede na vsebino. |
setMinimumWidth () | Uporablja se za nastavitev najmanjše širine tabele. |
setMinimumHeight () | Uporablja se za nastavitev najmanjše višine mize. |
pokaži () | Uporablja se za prikaz tabele. |
QTableWidget Uporaba
Naslednji razdelki ponujajo preproste primere, ki pojasnjujejo, kako ustvariti tabelo v aplikaciji PyQt z uporabo statičnih podatkov in podatkov s seznama.
Primer 1: Ustvarite preprosto tabelo s pomočjo statičnih podatkov
Naslednji skript ustvari tabelo statičnih podatkov s petimi vrsticami in štirimi stolpci z uporabo QTableWidget razred. Dva za zanke z vrednostmi obsega so bile v skriptu uporabljene za dodajanje statičnih podatkov v celice tabele. Položaji vrstic in stolpcev vsake celice so bili dodani kot vsebina vsake celice. The QDesktopWidget se v skriptu uporablja za prikaz okna s tabelo na sredini zaslona.
# Uvozite potrebne knjižniceuvoz sys
iz PyQt5.QtWidgets uvozijo QApplication, QMainWindow, QTableWidget, QTableWidgetItem, QDesktopWidget
iz PyQt5.QtCore uvoz QSize
# Določite razred za ustvarjanje tabele s statičnimi podatki
razred SimpleTable (QMainWindow):
def __init __ (samo):
# Pokliči nadrejeni konstruktor
super ().__v__()
# Nastavite velikost in naslov okna
sebe.setMinimumSize (QSize (420, 150))
sebe.setWindowTitle ("Preprosta tabela s statičnimi podatki")
# Ustvarite tabelo s potrebnimi lastnostmi
tabela = QTableWidget (samo)
tabela.setColumnCount (4)
tabela.setRowCount (5)
tabela.setMinimumWidth (500)
tabela.setMinimumHeight (500)
# Nastavite glave tabele
tabela.setHorizontalHeaderLabels (["Glava-1", "Glava-2", "Glava-3", "Glava-4"])
# Nastavite vrednosti tabele
za i v območju (5):
za j v območju (4):
tabela.setItem (i, j, QTableWidgetItem ("Row-" + str (i + 1) + ", Col-" + str (j + 1)))
# Spreminjanje velikosti vrstic in stolpcev glede na vsebino
tabela.resizeColumnsToContents ()
tabela.resizeRowsToContents ()
# Prikažite tabelo
tabela.pokaži ()
# Prikažite okno na sredini zaslona
zmaga = sam.frameGeometry ()
pos = QDesktopWidget ().availableGeometry ().center()
zmaga.moveCenter (poz)
sebe.premakniti (zmagati.topLeft ())
sebe.pokaži ()
# Ustvari objekt aplikacije in zaženi aplikacijo
app = QApplication (sys.argv)
mw = SimpleTable ()
mw.pokaži ()
app.exec ()
Naslednje okno s tabelo se bo pojavilo, zgornji skript se izvede. Glede na vrednosti za zanke, vrednost celice prve vrstice in prvega stolpca je 'Vrstica-1, stolpec-1,'in vrednost celice zadnje vrstice in zadnjega stolpca je'Vrstica-5, Col-4."
2. primer: Ustvarite tabelo z nasveti za orodje z uporabo podatkov slovarja in seznama
Naslednji skript ustvari tabelo z vsebino slovarja Python in seznam s pomočjo QTableWidget razred. Skript doda tudi besedilo nasveta za glavo tabele. Slovar Python z imenom znamke je navedeno tudi v scenariju. Kode tečajev se uporabljajo kot ključne vrednosti slovarja. Za določitev ID-jev študentov je določen seznam Python. Ključne vrednosti slovarja se dodajo v glavo tabele, vrednosti seznama se dodajo v prvi stolpec tabele, vrednosti slovarja pa v druge stolpce tabele.
# Uvozite potrebne moduleuvoz sys
iz PyQt5.QtWidgets uvozi QApplication, QTableWidget, QTableWidgetItem, QDesktopWidget
# Razglasite spremenljivko slovarja z oznakami
znamke = '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]
class TableFromList (QTableWidget):
def __init __ (self, data, * args):
# Pokliči nadrejeni konstruktor
QTableWidget.__init __ (self, * args)
# Navedite seznam študentskih IDS
sebe.ID_list = ['0189945', '0154590', '0196734', '0185611', '0178956']
# Nastavite potrebne konfiguracije za mizo
sebe.podatki = podatki
sebe.resizeColumnsToContents ()
sebe.resizeRowsToContents ()
sebe.setColumnWidth (0, 100)
za i v območju (4):
sebe.setColumnWidth (i, 80)
sebe.setMinimumWidth (400)
sebe.setWindowTitle ("Označi list")
# Razglasite spremenljivko, da nastavite vsebino glave
glave = []
glave.dodaj (")
# for zanka za branje tipk slovarja
za n, vnesite enumerate (razvrščeno (self.podatkov.tipke ())):
glave.dodaj (ključ)
# for zanka za branje vrednosti slovarja
za m, postavka v naštevanju (self.podatki [ključ]):
ID = QTableWidgetItem (self.ID_list [m])
sebe.setItem (m, 0, ID)
newVal = QTableWidgetItem (str (element))
sebe.setItem (m, n + 1, newVal)
# Nastavite oznako glave tabele
sebe.setHorizontalHeaderLabels (glave)
# Nastavite nasvete za glave
sebe.horizontalHeaderItem (1).setToolTip ("Multimedija")
sebe.horizontalHeaderItem (2).setToolTip ("Umetna inteligenca")
sebe.horizontalHeaderItem (3).setToolTip ("Napredna baza podatkov")
sebe.horizontalHeaderItem (4).setToolTip ("Unix programiranje")
# Preberite določeno vrednost celice
sebe.kliknili.povezati (samo.on_click)
# Prikažite okno na sredini zaslona
zmaga = sam.frameGeometry ()
pos = QDesktopWidget ().availableGeometry ().center()
zmaga.moveCenter (poz)
sebe.premakniti (zmagati.topLeft ())
sebe.pokaži ()
def on_click (samo):
za ItemVal v sebi.selectedItems ():
# Preberite vrednost glave na podlagi izbrane celice
subjekt = jaz.horizontalHeaderItem (ItemVal.stolpec ()).besedilo ()
# Natisnite podrobne informacije o znamki
print ("\ n", samo.ID_list [ItemVal.row ()], "got", ItemVal.text (), "in", subject)
# Ustvari objekt aplikacije in zaženi aplikacijo
app = QApplication (sys.argv)
table = TableFromList (ocene, 5, 5)
tabela.pokaži ()
app.exec ()
Po izvedbi zgornjega skripta se prikaže naslednje okno s tabelo.
Zaključek
Ta vadnica vam je pokazala, kako z dvema primeroma ustvarite tabele s fiksnimi podatki, podatki slovarja in seznamom. Tabele lahko ustvarite tudi z dinamičnimi podatki z uporabo tabel zbirke podatkov ali drugih podatkovnih virov.