Vajalikud meetodid
The QTableWidget klass sisaldab palju meetodeid tabeli loomisega seotud ülesannete täitmiseks. Mõned selle klassi sagedamini kasutatavad meetodid on selgitatud allpool:
Meetodi nimi | Eesmärk |
---|---|
setRowCount () | Kasutatakse ridade arvu määramiseks. |
setColumnCount () | Kasutatakse veergude arvu määratlemiseks. |
setHorizontalHeaderLabels () | Kasutatakse tabeli päisesiltide määramiseks. |
setItem () | Kasutatakse tabeli lahtri väärtuse määramiseks. |
resizeColumnsToContents () | Kasutatakse tabeli veergude suuruse muutmiseks vastavalt sisule. |
resizeRowsToContents () | Kasutatakse tabeli ridade suuruse muutmiseks vastavalt sisule. |
setMinimumWidth () | Kasutatakse tabeli minimaalse laiuse määramiseks. |
setMinimumHeight () | Kasutatakse laua minimaalse kõrguse määramiseks. |
näita () | Kasutatakse tabeli kuvamiseks. |
QTableWidgeti kasutamine
Järgmistes jaotistes on lihtsad näited selgitamaks, kuidas luua staatiliste andmete ja loendiandmete abil PyQt rakenduses tabel.
Näide 1: staatiliste andmete abil saate luua lihtsa tabeli
Järgmine skript loob staatiliste andmete tabeli, millel on viis rida ja neli veergu, kasutades QTableWidget klass. Kaks eest Staatiliste andmete lisamiseks tabelirakkudesse on skriptis kasutatud vahemikuväärtustega tsükleid. Iga lahtri rea- ja veerupositsioonid on lisatud iga lahtri sisuks. The QDesktopWidget kasutatakse skriptis akna kuvamiseks, kus tabel on ekraani keskel.
# Importige vajalikud teegidimpordi süsteem
alates PyQt5.QtWidgetid impordivad QApplicationi, QMainWindowi, QTableWidgetit, QTableWidgetItemit, QDesktopWidgeti
alates PyQt5.QtCore'i import QSize
# Määrake klass staatiliste andmetega tabeli loomiseks
klass SimpleTable (QMainWindow):
def __init __ (ise):
# Helistage vanemkonstruktorile
Super().__selles__()
# Määrake akna suurus ja pealkiri
ise.setMinimumSize (QSize (420, 150))
ise.setWindowTitle ("Staatiliste andmetega lihtne tabel")
# Looge tabel vajalike omadustega
tabel = QTableWidget (ise)
tabel.setColumnCount (4)
tabel.setRowCount (5)
tabel.setMinimumWidth (500)
tabel.setMinimumHeight (500)
# Määrake tabeli päised
tabel.setHorizontalHeaderLabels (["Päis-1", "Päis-2", "Päis-3", "Päis-4"])
# Määrake tabeli väärtused
i jaoks vahemikus (5):
j jaoks vahemikus (4):
tabel.setItem (i, j, QTableWidgetItem ("Rida-" + str (i + 1) + ", Col-" + str (j + 1)))
# Ridade ja veergude suuruse muutmine sisu järgi
tabel.resizeColumnsToContents ()
tabel.resizeRowsToContents ()
# Kuva tabel
tabel.näita ()
# Kuva aken ekraani keskel
võit = ise.frameGeometry ()
pos = QDesktopWidget ().availableGeometry ().Keskus()
võita.moveCenter (pos)
ise.liikuma (võitma.üleval vasakul())
ise.näita ()
# Loo rakenduse objekt ja käivitage rakendus
app = QApplication (sys.argv)
mw = SimpleTable ()
mw.näita ()
rakendus.exec ()
Järgmine aken koos tabeliga ilmub ülaltoodud skript käivitatakse. Vastavalt väärtustele eest silmuseid, on esimese rea ja esimese veeru lahtri väärtus '1. rida, veerg 1,'ning viimase rea ja viimase veeru lahtri väärtus on'5. rida, veerg 4."
Näide 2: tabeli loomine tööriistanõuandega, kasutades sõnastikku ja loendiandmeid
Järgmine skript loob tabeli Pythoni sõnaraamatu ja loendi sisuga, kasutades QTableWidget klass. Skript lisab tabeli päisesse ka tööriistanõu teksti. Nimega Pythoni sõnastik märgid deklareeritakse ka stsenaariumis. Kursuse koode kasutatakse sõnastiku põhiväärtustena. Üliõpilaste ID-de määratlemiseks on deklareeritud Pythoni loend. Sõnaraamatu põhiväärtused lisatakse tabeli päisesse, loendi väärtused lisatakse tabeli esimesse veergu ja sõnastiku väärtused lisatakse tabeli muudesse veergudesse.
# Impordi vajalikud moodulidimpordi süsteem
alates PyQt5.QtWidgetid impordivad QApplicationi, QTableWidgeti, QTableWidgetItemit, QDesktopWidgeti
# Deklareeri märkidega sõnastiku muutuja
hinnad = '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]
klassi TableFromList (QTableWidget):
def __init __ (ise, andmed, * args):
# Kõne vanemkonstruktorile
QTableWidget.__init __ (ise, * vaidleb)
# Deklareerige õpilaste isikutunnistuste loend
ise.ID_list = ['0189945', '0154590', '0196734', '0185611', '0178956']
# Määrake tabelis vajalikud konfiguratsioonid
ise.andmed = andmed
ise.resizeColumnsToContents ()
ise.resizeRowsToContents ()
ise.setColumnWidth (0, 100)
i jaoks vahemikus (4):
ise.setColumnWidth (i, 80)
ise.setMinimumWidth (400)
ise.setWindowTitle ("Märgi leht")
# Päise sisu määramiseks deklareerige muutuja
päised = []
päised.lisa (")
# for loop sõnaraamatu võtmete lugemiseks
n jaoks sisestage loend (sorted (self.andmed.võtmed ())):
päised.lisa (võti)
# for loop sõnaraamatu väärtuste lugemiseks
m jaoks üksus loenduses (ise.andmed [võti]):
ID = QTableWidgetItem (ise.ID_loend [m])
ise.setItem (m, 0, ID)
newVal = QTableWidgetItem (str (element))
ise.setItem (m, n + 1, newVal)
# Määrake tabeli päise silt
ise.setHorizontalHeaderLabels (päised)
# Määrake päiste tööriistavihjed
ise.horizontalHeaderItem (1).setToolTip ("Multimeedia")
ise.horizontalHeaderItem (2).setToolTip ("tehisintellekt")
ise.horizontalHeaderItem (3).setToolTip ("Täpsem andmebaas")
ise.horizontalHeaderItem (4).setToolTip ("Unixi programmeerimine")
# Loe konkreetse lahtri väärtust
ise.klõpsatud.ühendama (ise.on_click)
# Kuva aken ekraani keskel
võit = ise.frameGeometry ()
pos = QDesktopWidget ().availableGeometry ().Keskus()
võita.moveCenter (pos)
ise.liikuma (võitma.üleval vasakul())
ise.näita ()
def on_click (ise):
üksuse ItemVal jaoks.valitud üksused ():
# Lugege päise väärtust valitud lahtri põhjal
subjekt = ise.horizontalHeaderItem (ItemVal.veerg()).tekst ()
# Printige märgi üksikasjalik teave
print ("\ n", ise.ID_loend [ItemVal.rida ()], "sai", ItemVal.tekst (), "sisse", teema)
# Loo rakenduse objekt ja käivitage rakendus
app = QApplication (sys.argv)
tabel = TableFromList (märgid, 5, 5)
tabel.näita ()
rakendus.exec ()
Pärast ülaltoodud skripti käivitamist ilmub järgmine aken koos tabeliga.
Järeldus
See õpetus näitas, kuidas luua kahe näite abil fikseeritud andmetega tabeleid, sõnaraamatu andmeid ja andmete loendit. Tabeleid saab luua ka dünaamiliste andmetega, kasutades andmebaasitabeleid või muid andmeallikaid.