Nezbytné metody
The QTableWidget třída zahrnuje mnoho metod k provádění úkolů souvisejících s vytvářením tabulek. Níže jsou vysvětleny některé z běžněji používaných metod této třídy:
Název metody | Účel |
---|---|
setRowCount () | Používá se k definování počtu řádků. |
setColumnCount () | Používá se k definování počtu sloupců. |
setHorizontalHeaderLabels () | Slouží k nastavení štítků záhlaví tabulky. |
setItem () | Slouží k nastavení hodnoty buňky v tabulce. |
resizeColumnsToContents () | Slouží k změně velikosti sloupců tabulky na základě obsahu. |
resizeRowsToContents () | Slouží k změně velikosti řádků tabulky na základě obsahu. |
setMinimumWidth () | Slouží k nastavení minimální šířky stolu. |
setMinimumHeight () | Slouží k nastavení minimální výšky stolu. |
ukázat() | Slouží k zobrazení tabulky. |
Použití QTableWidget
Následující části poskytují jednoduché příklady, které vysvětlují, jak vytvořit tabulku v aplikaci PyQt pomocí statických dat a dat seznamu.
Příklad 1: Vytvoření jednoduché tabulky pomocí statických dat
Následující skript vytvoří tabulku statických dat s pěti řádky a čtyřmi sloupci pomocí QTableWidget třída. Dva pro ve skriptu byly použity smyčky s hodnotami rozsahu k přidání statických dat do buněk tabulky. Pozice řádků a sloupců každé buňky byly přidány jako obsah každé buňky. The QDesktopWidget se ve skriptu používá k zobrazení okna s tabulkou ve středu obrazovky.
# Importujte potřebné knihovnyimport sys
z PyQt5.QtWidgets importují QApplication, QMainWindow, QTableWidget, QTableWidgetItem, QDesktopWidget
z PyQt5.QtCore import QSize
# Definujte třídu pro vytvoření tabulky se statickými daty
třída SimpleTable (QMainWindow):
def __init __ (vlastní):
# Zavolejte nadřazeného konstruktora
super ().__init __ ()
# Nastavte velikost a název okna
já.setMinimumSize (QSize (420, 150))
já.setWindowTitle ("Jednoduchá tabulka se statickými daty")
# Vytvořte tabulku s potřebnými vlastnostmi
tabulka = QTableWidget (vlastní)
stůl.setColumnCount (4)
stůl.setRowCount (5)
stůl.setMinimumWidth (500)
stůl.setMinimumHeight (500)
# Nastavte záhlaví tabulky
stůl.setHorizontalHeaderLabels (["Header-1", "Header-2", "Header-3", "Header-4"])
# Nastavte hodnoty tabulky
pro i v rozsahu (5):
pro j v rozsahu (4):
stůl.setItem (i, j, QTableWidgetItem ("Row-" + str (i + 1) + ", Col-" + str (j + 1)))
# Změna velikosti řádků a sloupců na základě obsahu
stůl.resizeColumnsToContents ()
stůl.resizeRowsToContents ()
# Zobrazte tabulku
stůl.ukázat()
# Zobrazte okno ve středu obrazovky
vyhrát = já.frameGeometry ()
pos = QDesktopWidget ().availableGeometry ().centrum()
vyhrát.moveCenter (pozice)
já.tah (vyhrát.vlevo nahoře())
já.ukázat()
# Vytvořte objekt aplikace a spusťte aplikaci
aplikace = QApplication (sys.argv)
mw = SimpleTable ()
mw.ukázat()
aplikace.exec ()
Zobrazí se následující okno s tabulkou, výše uvedený skript se provede. Podle hodnot pro smyčky, hodnota buňky prvního řádku a prvního sloupce je 'Řádek 1, sloupec 1,„a hodnota buňky posledního řádku a posledního sloupce je“Řádek 5, sloupec 4.''
Příklad 2: Vytvoření tabulky s tipem na nástroj pomocí slovníku a seznamu dat
Následující skript vytvoří tabulku s obsahem slovníku Pythonu a seznam pomocí QTableWidget třída. Skript také přidá textový tip pro záhlaví tabulky. Pojmenovaný slovník Pythonu známky je také deklarován ve skriptu. Kódy kurzu se používají jako klíčové hodnoty slovníku. Seznam Pythonu je deklarován k definování ID studentů. Klíčové hodnoty slovníku se přidají do záhlaví tabulky, hodnoty seznamu se přidají do prvního sloupce tabulky a hodnoty slovníku se přidají do ostatních sloupců tabulky.
# Importujte potřebné modulyimport sys
z PyQt5.QtWidgets importují QApplication, QTableWidget, QTableWidgetItem, QDesktopWidget
# Deklarujte slovní proměnnou se značkami
známky = '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]
třída TableFromList (QTableWidget):
def __init __ (self, data, * args):
# Zavolejte konstruktora rodiče
QTableWidget.__init __ (self, * args)
# Deklarujte seznam IDS studentů
já.ID_list = ['0189945', '0154590', '0196734', '0185611', '0178956']
# Nastavte potřebnou konfiguraci tabulky
já.data = data
já.resizeColumnsToContents ()
já.resizeRowsToContents ()
já.setColumnWidth (0, 100)
pro i v rozsahu (4):
já.setColumnWidth (i, 80)
já.setMinimumWidth (400)
já.setWindowTitle ("Označit list")
# Deklarujte proměnnou pro nastavení obsahu záhlaví
záhlaví = []
záhlaví.připojit(")
# pro smyčku pro čtení kláves slovníku
pro n zadejte výčet (seřazený (vlastní.data.klíče ())):
záhlaví.připojit (klíč)
# for loop pro čtení hodnot slovníku
pro m, položka ve výčtu (vlastní.data [klíč]):
ID = QTableWidgetItem (vlastní.ID_list [m])
já.setItem (m, 0, ID)
newVal = QTableWidgetItem (str (položka))
já.setItem (m, n + 1, newVal)
# Nastavte štítek záhlaví tabulky
já.setHorizontalHeaderLabels (záhlaví)
# Nastavte popisy záhlaví
já.horizontalHeaderItem (1).setToolTip ("Multimédia")
já.horizontalHeaderItem (2).setToolTip ("Umělá inteligence")
já.horizontalHeaderItem (3).setToolTip ("Pokročilá databáze")
já.horizontalHeaderItem (4).setToolTip ("Unixové programování")
# Přečtěte si konkrétní hodnotu buňky
já.klikl.připojit (já.při kliknutí)
# Zobrazte okno ve středu obrazovky
vyhrát = já.frameGeometry ()
pos = QDesktopWidget ().availableGeometry ().centrum()
vyhrát.moveCenter (pozice)
já.tah (vyhrát.vlevo nahoře())
já.ukázat()
def on_click (self):
pro ItemVal samostatně.selectedItems ():
# Přečtěte hodnotu záhlaví na základě vybrané buňky
předmět = já.horizontalHeaderItem (ItemVal.sloupec()).text()
# Vytiskněte podrobné informace o značce
print ("\ n", vlastní.ID_list [ItemVal.row ()], "got", ItemVal.text (), „in“, předmět)
# Vytvořte objekt aplikace a spusťte aplikaci
aplikace = QApplication (sys.argv)
tabulka = TableFromList (známky, 5, 5)
stůl.ukázat()
aplikace.exec ()
Po provedení výše uvedeného skriptu se zobrazí následující okno s tabulkou.
Závěr
Tento kurz vám ukázal, jak pomocí dvou příkladů vytvořit tabulky s pevnými daty, daty slovníku a daty seznamu. Tabulky lze také vytvářet s dynamickými daty pomocí databázových tabulek nebo jiných zdrojů dat.