PyQt5-opetusohjelma esimerkkeineen: Luo Python Käyttöliittymät Qt:llä
⚡ Älykäs yhteenveto
PyQt on Python sidonta alustojenväliselle Qt-widget-työkalupakille, jonka avulla kehittäjät voivat rakentaa natiiveja työpöytäkäyttöliittymiä. Se kattaa yli kuusisataa C++ kursseja, jotka kattavat ikkunat, painikkeet, asettelut, signaalit, kolikkopelit ja teemat Windows, macOSja Linux.

Alla olevat osiot vievät sinut PyQt:n perusteista asennukseen, ydinwidgetteihin, asetteluihin ja teemoihin ajettavien esimerkkien avulla.
Mikä on PyQt?
PyQt on Python avoimen lähdekoodin widget-työkalupakin Qt:n sitominen, joka toimii myös alustojen välisenä sovelluskehityskehyksenä. Qt on suosittu C++ kehys GUI-sovellusten kirjoittamiseen kaikille tärkeimmille työpöytä-, mobiili- ja sulautetuille alustoille (se tukee Linuxia, Windows, macOS, Android, iOS, Raspberry Pi ja muut).
PyQt on englantilaisen Riverbank Computing -yrityksen kehittämä ja ylläpitämä ilmainen ohjelmisto, kun taas Qt:n on kehittänyt suomalainen yritys nimeltä The Qt Company.
PyQt:n ominaisuudet
Tässä on PyQtin tärkeitä ominaisuuksia:
PyQt koostuu yli kuudestasadasta luokasta, jotka kattavat useita ominaisuuksia, kuten:
- Graafiset käyttöliittymät
- SQL-tietokannat
- Verkkotyökalut
- XML-käsittely
- Networking
Näitä ominaisuuksia voidaan yhdistää luodakseen edistyneitä käyttöliittymiä sekä itsenäisiä sovelluksia. Monet suuret yritykset kaikilla toimialoilla käyttävät Qt:tä. Joitakin esimerkkejä ovat LG, Mercedes, AMD, Panasonic ja Harman.
PyQt-versiot
PyQt on saatavilla kahtena versiona, PyQt4 ja PyQt5. PyQt4 tarjoaa liimakoodia Qt-kehyksen 4.x- ja 5.x-versioiden sitomiseen, kun taas PyQt5 tarjoaa sidonnan vain 5.x-versioille. Tämän seurauksena PyQt5 ei ole taaksepäin yhteensopiva vanhemman version vanhentuneiden moduulien kanssa. Tässä PyQt-käyttöliittymän opetusohjelmassa esimerkkien demonstrointiin käytetään PyQt5:tä. Näiden kahden version lisäksi Riverbank Computing tarjoaa myös PyQt3D:n – Python Qt3D-kehyksen sidokset. Qt3D on sovelluskehys, jota käytetään reaaliaikaisten simulointijärjestelmien luomiseen 2D/3D-renderöinnillä.
PyQt5:n asentaminen
Tässä PyQt5-opetusohjelmassa näemme kaksi tapaa asentaa PyQt:
- Pyörätiedostojen käyttö
- Rakentaminen ja asennus lähteestä
Qt (lausutaan söpö) on monimutkainen järjestelmä, ja PyQt-koodikanta sisältää käännetty C++ ja Python koodia konepellin alla. Tämän seurauksena sen rakentaminen ja asentaminen lähdekoodista on monimutkaisempi prosessi kuin muihin Python kirjastoja. Voit kuitenkin helposti asentaa PyQt5:n pyörien avulla.
Asennus pyörillä
Pyörät ovat uusi standardi Python pakkaus ja jakelumuoto. Yksinkertaisesti sanottuna pyörä on ZIP-arkisto, jolla on erityinen nimi ja .whl tiedostopääte. Pyörät voidaan asentaa käyttämällä pip (Python's paketinhallinta), joka sisältyy oletuksena uusimpiin versioihin Python.
Joten jos sinulla on Python 3.4 tai uudempi asennettuna, sinulla on jo pip. Jos kuitenkin käytät vanhempaa versiota Pythonsinun on ladattava ja asennettava pip ennen kuin jatkat. Voit etsiä ohjeita tästä linkistä: https://pypi.org/project/pip/.
PyQt5:n asentaminen:
Vaihe 1) Avaa komentokehote.
Avaa komentokehote tai PowerShell Windows kone.
Vaihe 2) Kirjoita seuraava.
pip install PyQt5
Vaihe 3) Asennus onnistui.
Tämä PyQt5-opetusohjelman vaihe lataa PyQt5 whl -paketin (noin 50 Mt) ja asentaa sen järjestelmääsi.
Vaihtoehtoisesti voit myös ladata a Windows binääritiedosto versiolle Python asennettu tietokoneeseen.
Kun se on valmis, siirry tämän PyQt5-opetusohjelman seuraavaan osaan kirjoittaaksesi ensimmäisen GUI-sovelluksesi.
Perus PyQt Concepts ja Ohjelmat
Nyt kun olet asentanut PyQt5:n onnistuneesti tietokoneellesi, olet valmis kirjoittamaan Python GUI-sovellukset
Aloitetaan tässä PyQt5-tutoriaalissa yksinkertaisella sovelluksella, joka näyttää tyhjän ikkunan näytölläsi.
Sytytä oma Python IDLE ja kirjoita seuraava:
Ohjelman 1
import sys from PyQt5.QtWidgets import QApplication, QWidget if __name__ == "__main__": app = QApplication(sys.argv) w = QWidget() w.resize(300,300) w.setWindowTitle("Guru99") w.show() sys.exit(app.exec_())
Tallenna se nimellä app.py (nimellä ei ole väliä) ja paina F5-näppäintä suorittaaksesi ohjelman. Vaihtoehtoisesti voit kaksoisnapsauttaa tallennettua tiedostoa käynnistääksesi sovelluksen. Jos olet tehnyt kaiken oikein, uusi ikkuna avautuu otsikolla Guru99, kuten alla on esitetty.
Hienoa! Se toimii. Se ei ole paljon, mutta riittää perusasioiden ymmärtämiseen. Tässä PyQt-tutoriaalissa katsotaanpa yksityiskohtaisesti, mitä kukin ohjelmasi rivi tekee.
from PyQt5.QtWidgets import QApplication, QWidget
Tämä lauseke tuo kaikki moduulit, joita tarvitset graafisen käyttöliittymän luomiseen nykyiseen nimiavaruuteen. QtWidgets-moduuli sisältää kaikki tärkeimmät widgetit, joita käytät tässä Python Qt opetusohjelma.
app = QApplication(sys.argv)
Täällä olet luomassa QApplication-luokan objektia. Tämä vaihe on välttämätön PyQt5:lle; jokaisen käyttöliittymäsovelluksen on luotava QApplication-esiintymä eräänlaisena sisääntulopisteenä sovellukseen. Jos et luo sitä, näkyviin tulee virheitä.
sys.argv on luettelo komentoriviparametreista, jotka voit välittää sovellukselle, kun se käynnistetään komentotulkin kautta tai automatisoitaessa käyttöliittymää.
Tässä PyQt5-esimerkissä et antanut QApplicationille argumentteja. Siksi voit korvata sen alla olevalla koodilla ilman sys-moduulin tuontia.
app = QApplication([])
w = QWidget()
Seuraavaksi teemme QWidget-luokan objektin. QWidget on kaikkien Qt:n käyttöliittymäobjektien perusluokka, ja käytännössä kaikki sovelluksessa näkemäsi on widgetejä. Se sisältää valintaikkunat, tekstit, painikkeet, palkit ja niin edelleen. Ominaisuus, jonka avulla voit suunnitella monimutkaisia käyttöliittymiä, on se, että widgetit voivat olla sisäkkäisiä, eli widgetin sisällä voi olla widget, joka on toisen widgetin sisällä. Näet tämän toiminnassa seuraavassa osiossa.
w.resize(300,300)
QWidget-luokan koonmuutosmenetelmän avulla voit määrittää minkä tahansa widgetin mitat. Tässä tapauksessa olet muuttanut ikkunan kooksi 300 x 300 pikseliä.
Tässä tulee muistaa, että widgetit voidaan sijoittaa sisäkkäin; ulointa widgetiä (eli widgetiä, jolla ei ole pääelementtiä) kutsutaan ikkunaksi.
w.setWindowTitle("Guru99")
setWindowTitle()-metodin avulla voit antaa argumenttina merkkijonon, joka asettaa ikkunan otsikoksi annetun merkkijonon. PyQt5-esimerkissä otsikkorivillä näkyy Guru99.
w.show()
show() yksinkertaisesti näyttää widgetin näyttöruudulla.
sys.exit(app.exec_())
App.exec_() -menetelmä käynnistää Qt/C++ tapahtumasilmukka. Kuten tiedät, PyQt on suurelta osin kirjoitettu sisään C++ ja käyttää tapahtumasilmukkamekanismia rinnakkaissuorituksen toteuttamiseen. app.exec_() siirtää ohjauksen Qt:lle, joka sulkee sovelluksen vain, kun käyttäjä sulkee sen graafisesta käyttöliittymästä. Siksi ctrl+c ei sulje sovellusta kuten muissa Python ohjelmia. Koska Qt hallitsee sovellusta, Python tapahtumia ei käsitellä, ellemme määritä niitä sovelluksen sisällä. Huomaa myös, että exec-metodin nimessä on alaviiva; tämä johtuu siitä, että exec() oli jo avainsana Python ja alaviiva ratkaisee nimeämisristiriidan.
Tyhjien ikkunoiden takana
Edellisessä osiossa näit, miten Qt:ssä tehdään peruswidget. Nyt on aika tehdä monimutkaisempia käyttöliittymiä, joiden kanssa käyttäjät voivat olla todella vuorovaikutuksessa. Käynnistä jälleen... IDLE ja kirjoita seuraava.
import sys from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QMessageBox def dialog(): mbox = QMessageBox() mbox.setText("Your allegiance has been noted") mbox.setDetailedText("You are now a disciple and subject of the all-knowing Guru") mbox.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel) mbox.exec_() if __name__ == "__main__": app = QApplication(sys.argv) w = QWidget() w.resize(300,300) w.setWindowTitle("Guru99") label = QLabel(w) label.setText("Behold the Guru, Guru99") label.move(100,130) label.show() btn = QPushButton(w) btn.setText('Beheld') btn.move(110,150) btn.show() btn.clicked.connect(dialog) w.show() sys.exit(app.exec_())
Tallenna tiedosto nimellä appone.py tai millä tahansa muulla haluamallasi tavalla ja suorita ohjelma painamalla F5-näppäintä. Jos et ole tehnyt virheitä, IDLE avaa uuden ikkunan, jossa on tekstiä ja painike alla olevan kuvan mukaisesti.
- Kun napsautat ensimmäisessä ikkunassa olevaa painiketta, avautuu uusi viestilaatikko, jossa on kirjoittamasi teksti.
- Voit nyt napsauttaa Piilota tiedot/Näytä tiedot -painiketta vaihtaaksesi lisätekstin näkyvyyttä.
Kuten näette, koska emme olleet asettaneet ikkunan otsikkoa viestiruutuun, oletusotsikko annettiin seuraavasti: Python itse.
Nyt kun se toimii, katsotaanpa edelliseen PyQt5-esimerkkiin lisäämääsi ylimääräistä koodia.
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QMessageBox
Tämä tuo lisää widgetejä, joita olet käyttänyt PyQt5-esimerkeissä, nimittäin QLabel, QPushButton ja QMessageBox.
def dialog(): mbox = QMessageBox() mbox.setText("Your allegiance has been noted") mbox.setDetailedText("You are now a disciple and subject of the all-knowing Guru") mbox.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel) mbox.exec_()
Tässä olet määrittänyt menetelmän nimeltä dialogi, joka luo viestilaatikko-widgetin ja asettaa tekstiä painikkeisiin ja muihin kenttiin.
Dialogimenetelmää kutsutaan ohjelman päälohkosta, kun painiketta painetaan tietyssä widgetissä (tässä tapauksessa btn PushButton). Painikkeella laukaistu napsautustapahtuma saa tämän toiminnon suorittamaan. Tällaista funktiota kutsutaan Qt:n slotiksi, ja opit siitä lisää signaalit ja lähtö tulevissa kappaleissa.
if __name__ == "__main__": app = QApplication(sys.argv) w = QWidget() w.resize(300,300) w.setWindowTitle("Guru99")
Tämä on sovelluksen pääosio ja kuten edellisessä esimerkissä, aloitat luomalla QApplication-instanssin ja sen jälkeen yksinkertaisen widgetin, eli QWidget-instanssin.
label = QLabel(w)
btn = QPushButton(w)
Olet lisännyt tähän sovellukseen kaksi uutta widgetiä: QLabel ja QPushButton. QLabelia käytetään ei-muokattavan tekstin tai paikkamerkkien tulostamiseen widgetin sisään, kun taas QPushButtonia käytetään napsautettavan painikkeen luomiseen.
Tärkeintä tässä on huomata, että kun luot nimiön ja btn-objekteja, välität ikkunaobjektin (w) QLabelin ja QPushButtonin rakentajille. Näin sisäkkäisyys toimii PyQt5:ssä. Jos haluat luoda widgetin toisen widgetin sisällä, välität pääwidgetin viittauksen lapsen rakentajalle.
label.move(100,130) btn.move(110,150)
move() käytetään asettamaan widgetin sijainti sen yläwidgetiin nähden. Ensimmäisessä tapauksessa tunnistetta siirretään 100 kuvapistettä vasemmalta ja 130 kuvapistettä ikkunan yläosasta.
Vastaavasti painike sijoitetaan 110 pikselin etäisyydelle ikkunan vasemmalta ja 150 pikselin päähän ikkunan yläreunasta. Tämä esimerkki on karkea tapa saavuttaa asetteluja, eikä sitä yleensä käytetä tuotannossa. se sisältyy tähän vain oppimistarkoituksiin. Qt tukee erilaisia asetteluja, jotka näet yksityiskohtaisesti tämän PyQt-opetusohjelman tulevissa osissa.
btn.clicked.connect(dialog)
Lopuksi tässä on esimerkki signaaleista ja sloteista Qt:ssä. Käyttöliittymäpohjaisissa sovelluksissa funktiot suoritetaan käyttäjän suorittamien toimintojen perusteella, kuten hiiren vieminen elementin päälle tai painikkeen napsauttaminen. Näitä toimintoja kutsutaan Tapahtumat. Muista, että app.exec_()-menetelmä siirtää ohjauksen Qt:lle tapahtumaa varten silmukka. Tapahtumasilmukka on tarkoitettu tätä varten: tapahtumien kuuntelemiseen ja toimien suorittamiseen vastauksena.
Aina kun tapahtuma tapahtuu, kuten käyttäjä napsauttaa painiketta, vastaava Qt-widget nostaa a signaali. Nämä signaalit voidaan liittää Python tehtävät (kuten tässä esimerkissä dialogitoiminto), jotta toiminto suoritetaan, kun signaali laukaistaan. Näitä toimintoja kutsutaan lähtö Qt lingolla.
Tämän jälkeen tapahtumasignaalin perusteella lähtötilanteen funktion laukaisemisen perussyntaksi on seuraava:
widget.signal.connect(slot)
Tämä tarkoittaa, että aina kun signaali laukaisee a vekotin, kytketty aukko toiminto suoritetaan. Yhteenvetona voidaan todeta, että Qt käyttää signaaleja ja aikavälejä kommunikoidakseen objektien välillä ja helpottaakseen komponenttien uudelleenkäytettävyyttä ja vuorovaikutteisuutta.
Nyt kun osaat upottaa widgetejä ja toteuttaa vuorovaikutuksia signaalien ja slottien avulla, tässä on luettelo hyödyllisistä widgeteistä ja muista luokista, joita voit käyttää PyQt-sovelluksissasi.
Komponentit ja widgetit
PyQtissa on saatavilla suuri määrä widgetejä GUI-sovellusten luomiseen. PyQt5:n kanssa on kuitenkin tapahtunut luokat uudelleenjärjestelyä eri moduuleiksi ja lisenssien versiot.
Siksi on erittäin tärkeää saada yleiskuva PyQt5:n rakenteesta. Tässä osiossa näet, miten PyQt5 on järjestetty sisäisesti, ja opit PyQt5:n tarjoamista eri moduuleista, kirjastoista ja API-luokista.
PyQt5-hakemistorakenne
Nämä ovat käyttämiä perusmoduuleja PythonQt-sidos, erityisesti PyQt5.
- QtSe yhdistää kaikki alla mainitut luokat/moduulit yhdeksi moduuliksi. Se lisää huomattavasti sovelluksen käyttämää muistia. Kehystä on kuitenkin helpompi hallita tuomalla vain yksi moduuli.
- QtCore: Sisältää muiden moduulien käyttämät ydinluokat, jotka eivät ole graafisia. Tässä on toteutettu Qt-tapahtumasilmukka, signaalit ja väliliitettävyys jne..
- QtWidgetitSisältää useimmat PyQt5:ssä saatavilla olevat widgetit.
- QtGui: Sisältää GUI-komponentteja ja laajentaa QtCore-moduulia.
- QtNetwork: Sisältää luokkia, joita käytetään verkko-ohjelmoinnin toteuttamiseen Qt:n kautta. Se tukee TCP-palvelimia, TCP-pistokkeita, UDP-pistokkeita, SSL-käsittelyä, verkkoistuntoja ja DNS-hakuja.
- QtMultimedia: tarjoaa matalan tason multimediatoimintoja.
- QtSql: toteuttaa tietokantaintegroinnin SQL-tietokantoihin. Tukee ODBC:tä, MySQL, Oracle, SQLiteja PostgreSQL.
PyQt5-widgetit
Tässä on luettelo PyQt5:n yleisimmin käytetyistä widgeteistä:
- QLineEdit: Tämä on syöttökenttä, johon käyttäjä voi syöttää yhden rivin tekstiä.
line = QLineEdit()
- QRadioButton: Tämä on syöttökenttä, jossa on valittava painike, samanlainen kuin HTML:n radiopainikkeet.
rad = QRadioButton("button title") rad.setChecked(True) #to select the button by default.
- QComboBox: Sitä käytetään näyttämään avattava valikko, jossa on luettelo valittavissa olevista kohteista.
drop = QComboBox(w) drop.addItems(["item one", "item two", "item three"])
- QCheckBox: Näyttää valittavissa olevan neliöruudun tarran edessä, joka on rastitettu, jos se on valittuna, kuten radiopainikkeita.
check = QCheckBox("button title")
- QMenuBar: Se näyttää vaakasuoran valikkorivin ikkunan yläreunassa. Voit lisätä tähän palkkiin vain QMenu-luokan objekteja. Nämä QMenu-objektit voivat lisäksi sisältää merkkijonoja, QAction-objekteja tai muita QMenu-objekteja.
- QToolBar: Se on vaakasuora palkki tai ruutu, jota voidaan siirtää ikkunan sisällä. Se voi sisältää painikkeita ja muita widgetejä.
- QTab: Sitä käytetään ikkunan sisällön jakamiseen useille sivuille, joille pääsee käsiksi widgetin yläosassa olevien eri välilehtien kautta. Se koostuu kahdesta osasta: välilehtipalkista ja välilehtisivusta.
- QScrollBar: Sitä käytetään vierityspalkkien luomiseen, joiden avulla käyttäjä voi vierittää ikkunassa ylös ja alas. Se koostuu liikuteltavasta liukusäätimestä, liukusäätimestä track ja kaksi painiketta liukusäätimen vierittämiseen ylös tai alas.
scroll = QScrollBar()
- QSplitter: Jakajia käytetään erottamaan ikkunan sisältö, jotta widgetit ryhmitellään oikein eivätkä näytä sekavalta. QSplitter on yksi PyQt5:ssä saatavilla olevista ensisijaisista asettelukäsittelijöistä, ja sitä käytetään sisällön jakamiseen sekä vaaka- että pystysuunnassa.
- QDockTelakointiwidget on ali-ikkuna, jolla on kaksi ominaisuutta: sitä voidaan siirtää pääikkunan sisällä ja se voidaan telakoida pääikkunan ulkopuolelle toiseen paikkaan näytöllä.
Asettelut ja teemat
Aiemmissa PyQt5-esimerkeissä olet käyttänyt vain menetelmiä move() ja resize() asettaaksesi widgetien sijainnit graafisessa käyttöliittymässäsi.
PyQtissa on kuitenkin vankka asettelunhallintamoottori, jonka avulla voidaan luoda edistyneitä käyttöliittymiä sovelluksille. Tässä osiossa opit kahdesta tärkeästä luokasta, joita käytetään Qt:ssä asettelujen luomiseen ja hallintaan.
- QBoxLayout
- QGridLayout
QBoxLayout
QBoxAsettelua käytetään asettelun alawidgetien kohdistamiseen vaaka- tai pystyriville. Kaksi kiinnostavaa luokkaa, jotka perivät Q:ltaBoxUlkoasu ovat:
- QHBoxAsettelu: käytetään aliwidgetien linjaamiseen vaakasuunnassa.
- QVBoxAsettelu: käytetään alatason widgetien linjaamiseen pystysuunnassa.
Esimerkiksi tällä tavalla kolme painiketta kohdistetaan QH:n kanssaBoxUlkoasu näyttää.
import sys from PyQt5.QtWidgets import * if __name__ == "__main__": app = QApplication([]) w = QWidget() w.setWindowTitle("Musketeers") btn1 = QPushButton("Athos") btn2 = QPushButton("Porthos") btn3 = QPushButton("Aramis") hbox = QHBoxLayout(w) hbox.addWidget(btn1) hbox.addWidget(btn2) hbox.addWidget(btn3) w.show() sys.exit(app.exec_())
Ja tältä ne näyttävät QV:ssäBoxLayout.
import sys from PyQt5.QtWidgets import * if __name__ == "__main__": app = QApplication([]) w = QWidget() w.setWindowTitle("Musketeers") btn1 = QPushButton("Athos") btn2 = QPushButton("Porthos") btn3 = QPushButton("Aramis") vb = QVBoxLayout(w) vb.addWidget(btn1) vb.addWidget(btn2) vb.addWidget(btn3) w.show() sys.exit(app.exec_())
Ainoa toiminto, joka tarvitsee selitystä tässä vaiheessa, on addWidget()-metodi. Sitä käytetään widgetien lisäämiseen HBox tai VBox layout. Sitä käytetään myös muissa asetteluissa, joissa se vaatii eri määrän parametreja, kuten näet seuraavassa osiossa. Widgetit näkyvät asettelun sisällä siinä järjestyksessä, jossa lisäät ne.
QGridLayout
QGridLayoutilla luodaan rajapintoja, joissa widgetit asetetaan ruudukon (kuten matriisin tai 2D-taulukon) muodossa. Jos haluat lisätä elementtejä ruudukkoasetteluun, voit käyttää matriisiesitystä määrittääksesi rivien ja sarakkeiden lukumäärän ruudukossa sekä näiden elementtien sijainnin.
Jos esimerkiksi haluat luoda 3*3-ruudukon (eli ruudukon, jossa on kolme riviä ja kolme saraketta), kirjoitat seuraavan koodin:
Import sys from PyQt5.QtWidgets import * if __name__ == "__main__": app = QApplication([]) w = QWidget() grid = QGridLayout(w) for i in range(3): for j in range(3): grid.addWidget(QPushButton("Button"),i,j) w.show() sys.exit(app.exec_())
Tästä tulee tulos:
Ruudukkoasettelun addWidget()-metodi ottaa vastaan seuraavat argumentit:
- Widget-objekti, jonka haluat lisätä ruudukkoon
- Objektin x-koordinaatti
- Objektin y-koordinaatti
- Rivin pituus (oletus = 0)
- Sarakkeen väli (oletus = 0)
Ymmärtääksesi sen paremmin, voit lisätä jokaisen widgetin manuaalisesti alla olevan kuvan mukaisesti.
import sys from PyQt5.QtWidgets import * if __name__ == "__main__": app = QApplication([]) w = QWidget() grid = QGridLayout(w) grid.addWidget(QPushButton("Button one"),0,0) grid.addWidget(QPushButton("Button two"),0,1) grid.addWidget(QPushButton("Button three"),1,0) grid.addWidget(QPushButton("Button four"),1,1) w.show() sys.exit(app.exec_())
Tältä ruudukko näyttää:
Voit myös välittää riviväli- ja colspan-parametrit addWidget():lle, jotta voit kattaa useamman kuin yhden rivin tai sarakkeen.
Esimerkiksi
grid.addWidget(QPushButton("Button five"),2,0,1,0)
Tämä luo painikkeen, joka ulottuu molempien sarakkeiden yli.
Teemat
PyQt5 sisältää joitain sisäänrakennettuja teemoja, joita voit käyttää sovelluksissasi. The setStyle() QApplication-esiintymässä kutsuttua menetelmää käytetään määrittämään tietty teema sovelluksellesi.
Esimerkiksi seuraavan koodirivin lisääminen muuttaa sovelluksesi teeman oletusarvoisesta Fusion-teemaksi.
app.setStyle("Fusion")
Näin edellinen esimerkki näyttää Fusion-teemassa.
Toinen hyödyllinen funktio sovellusten teemojen muuttamiseen on setPalette()-metodi. Tässä on koodi eri widgetien värin muuttamiseen setPalette()-metodin avulla.
import sys from PyQt5.QtCore import Qt from PyQt5.QtWidgets import * from PyQt5.QtGui import QPalette if __name__ == "__main__": app = QApplication([]) app.setStyle("Fusion") qp = QPalette() qp.setColor(QPalette.ButtonText, Qt.black) qp.setColor(QPalette.Window, Qt.black) qp.setColor(QPalette.Button, Qt.gray) app.setPalette(qp) w = QWidget() grid = QGridLayout(w) grid.addWidget(QPushButton("Button one"),0,0) grid.addWidget(QPushButton("Button two"),0,1) grid.addWidget(QPushButton("Button three"),1,0) grid.addWidget(QPushButton("Button four"),1,1) w.show() sys.exit(app.exec_())
Tässä on tulos.
Jotta voit käyttää setPalette()-menetelmää, sinun on ensin määritettävä paletti. Tämä tehdään luomalla QPalette-luokan objekti.
qp = QPalette()
Huomaa, että QPalette-luokka kuuluu QtGui-moduuliin ja sinun on tuotava se, jotta tämä toimisi. Kun olet luonut QPalette-objektin, käytä setColor()-metodia välittääksesi widgetin nimen, jonka värin haluat muuttaa, ja värin, jonka haluat asettaa.
qp.setColor(QPalette.Window, Qt.black)
Tämä muuttaa ikkunan värin mustaksi. Kun olet määrittänyt värimaailmasi, käytä setPalette()-funktiota paletin käyttöönottamiseksi sovelluksessasi.
app.setPalette(qp)
Tämä on kaikki mitä sinun tarvitsee tehdä, jos haluat luoda perusteemoja sovelluksellesi. PyQt antaa sinun käyttää myös tyylisivuja määrittääksesi widgetien ulkoasun. Jos olet perehtynyt CSS:ään, voit helposti määrittää edistyneitä tyylejä sovelluksellesi Qt-tyylitaulukoiden avulla.












