PyQt5-opetusohjelma esimerkkeineen: Suunnittele GUI PyQt-sovelluksella Python
Mikä on PyQt?
PyQt on avoimen lähdekoodin widget-toolkit Qt:n python-sidos, joka toimii myös monialustaisena sovelluskehityskehyksenä. Qt on suosittu C++ puitteet GUI-sovellusten kirjoittamiseen kaikille tärkeimmille työpöytä-, mobiili- ja sulautetuille alustoille (tukee Linuxia, Windows, Mac käyttöjärjestelmä, Android, iOS, Raspberry Pi ja muut).
PyQt on ilmainen ohjelmisto, jonka on kehittänyt ja ylläpitää englantilainen Riverbank Computing, kun taas Qt on suomalainen The Qt Company -yritys.
PyQT:n ominaisuudet
Tässä on PyQtin tärkeitä ominaisuuksia:
Opi PyQt, joka koostuu yli kuudestasadasta luokasta, jotka kattavat joukon ominaisuuksia, kuten
- Graafiset käyttöliittymät
- SQL-tietokannat
- Verkkotyökalut
- XML-käsittely
- Networking
Näitä ominaisuuksia voidaan yhdistää kehittyneisiin käyttöliittymiin sekä itsenäisiin sovelluksiin. Monet suuret yritykset kaikilla toimialoilla käyttävät Qt:tä. Joitakin esimerkkejä ovat LG, Mercedes, AMD, Panasonic, Harman jne.
PyQt-versiot
PyQt on saatavilla kahdessa versiossa, PyQt4 ja PyQt5. PyQt4 tarjoaa liimakoodin Qt-kehyksen 4.x- ja 5.x-versioiden sitomiseen, kun taas PyQt5 tarjoaa sitomisen vain 5.x-versioille. Tämän seurauksena PyQt5 ei ole taaksepäin yhteensopiva vanhemman version vanhentuneiden moduulien kanssa. Tässä Qt GUI -opetusohjelmassa PyQt5:tä käytetään esimerkkien esittelyyn. Näitä kahta versiota lukuun ottamatta
Riverbank Computing tarjoaa myös PyQt3D:n – Qt3D-kehyksen python-sidoksia. Qt3D on sovelluskehys, jota käytetään luomaan reaaliaikaisia simulaatiojärjestelmiä 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 koodi konepellin alle. Tämän seurauksena sen rakentaminen ja asentaminen lähteestä on monimutkainen prosessi verrattuna muihin python-kirjastoihin. PyQt5:n voi kuitenkin asentaa helposti 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 Python, sinun on ladattava ja asennettava pip ennen kuin jatkat. Ohjeita siihen voi etsiä 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 binaari tietokoneellesi asennetulle python-versiolle.
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 onnistuneesti asentanut PyQt5:n tietokoneellesi, olet valmis kirjoittamaan Python GUI-suunnittelusovellukset.
Aloitetaan yksinkertaisella sovelluksella tässä PyQt5-opetusohjelmassa, joka näyttää tyhjän ikkunan näytölläsi.
Sytytä 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 käynnistääksesi ohjelman. Vaihtoehtoisesti voit käynnistää sovelluksen kaksoisnapsauttamalla tallennettua tiedostoa. Jos olet tehnyt kaiken oikein, uusi ikkuna avautuu otsikolla Guru99 alla olevan kuvan mukaisesti.
Loistava! Se toimii. Se ei ole paljon, mutta se riittää perusasioiden ymmärtämiseen. Katsotaan nyt tässä PyQt-opetusohjelmassa 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 välittänyt argumentteja QApplicationsille. Siksi voit myös korvata sen alla olevalla koodilla, eikä sinun tarvitse edes tuoda sys-moduulia.
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ä kannattaa muistaa, että widgetit voidaan upottaa yhteen, ulointa widgetiä (eli widgetiä, jolla ei ole yläpäätä) kutsutaan ikkunaksi.
w.setWindowTitle("Guru99")
Metodin setWindowTitle() avulla voit välittää merkkijonon argumenttina, joka asettaa ikkunan otsikon välittämäsi merkkijonoon. 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 rinnakkaisen suorituksen toteuttamiseen. app.exec_() siirtää ohjauksen Qt:lle, joka poistuu sovelluksesta vasta, kun käyttäjä sulkee sen graafisesta käyttöliittymästä. Tästä syystä ctrl+c ei poistu sovelluksesta kuten muissa python-ohjelmissa. Koska Qt hallitsee sovellusta, python-tapahtumia ei käsitellä, ellemme määritä niitä sovelluksen sisällä. Huomaa myös, että exec-menetelmän nimessä on alaviiva; tämä johtuu siitä, että exec() oli jo avainsana pythonissa ja alaviiva ratkaisee nimeämisristiriidan.
Tyhjien ikkunoiden takana
Edellisessä osiossa näit kuinka tehdä peruswidget Qt:ssä. Nyt on aika tehdä joitain osallistuvampia käyttöliittymiä, joiden kanssa käyttäjät voivat todella olla vuorovaikutuksessa. Sytytä uudelleen 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 mikä tahansa haluamasi ja paina F5 käynnistääksesi ohjelman. 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äet, koska emme olleet asettaneet viestikenttään mitään ikkunan otsikkoa, python itse tarjosi oletusotsikon.
Nyt kun se toimii, katsotaanpa lisäkoodia, jonka olet lisännyt edelliseen PyQt5-esimerkkiin.
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ääosa, ja kuten edellisessä esimerkissä, aloitat luomalla QApplication-esiintymä, jota seuraa yksinkertainen widget, eli QWidget-esiintymä.
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ämä on esimerkki Qt:n signaaleista ja aikaväleistä. GUI-pohjaisissa sovelluksissa toiminnot suoritetaan käyttäjän suorittamien toimien perusteella, kuten viemällä hiiri elementin päälle tai napsauttamalla painiketta. Näitä toimia kutsutaan Tapahtumat. Muista, että app.exec_()-menetelmä siirtää ohjauksen Qt:lle tapahtuma-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-funktiot (kuten tässä esimerkissä dialogitoiminto), jotta toiminto suoritetaan, kun signaali laukaistaan. Näitä toimintoja kutsutaan lähtö Qt lingolla.
Myöhemmin perussyntaksi aikavälitoiminnon laukaisemiseksi vastauksena tapahtuman signaaliin on seuraava
widget.signal.connect(slot)
Mikä tarkoittaa, että aina kun a 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 korkeatasoinen näkemys PyQt5:n rakenteesta. Tässä osiossa näet, kuinka 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.
- Qt: Se 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..
- QtWidgetit: Sisältää suurimman osan Pyqt5:ssä saatavilla olevista widgeteistä.
- 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 valittavissa oleva painike, samanlainen kuin html:n valintanapit.
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ää vaakasuuntaisen valikkopalkin ikkunan yläosassa. 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 jakamaan ikkunan sisältö useiksi sivuiksi, joita voidaan käyttää widgetin päällä olevien eri välilehtien kautta. Se koostuu kahdesta osasta: välilehtipalkista ja välilehtisivusta.
- QScrollBar: Sitä käytetään luomaan vierityspalkkeja, joiden avulla käyttäjä voi vierittää ylös ja alas ikkunassa. Se koostuu liikkuvasta liukusäätimestä, liukusäätimestä ja kahdesta painikkeesta liukusäätimen vierittämiseksi 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.
- QDock: Dock-widget on ali-ikkuna, jossa on kaksi ominaisuutta:
- Sitä voidaan siirtää pääikkunassa ja
- Se voidaan kiinnittää 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:
AddWidget()-metodi ruudukkoasettelussa ottaa nämä argumentit:
- Widget-objekti, jonka haluat lisätä ruudukkoon
- Objektin x-koordinaatti
- Objektin y-koordinaatti
- Riviväli (oletus = 0)
- Col-span (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 oletusarvosta Fusioniksi
app.setStyle("Fusion")
Tältä edellinen esimerkki näyttää Fusion Themessa
Toinen hyödyllinen toiminto sovellusten teeman tekemiseen on setPalette()-menetelmä. Tässä on koodi eri widgetien värien muuttamiseen setPalette()-toiminnolla.
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ä toimii. Kun olet luonut QPalette-objektin, anna setColor()-menetelmällä widgetin nimi, jonka väriä haluat muuttaa, ja väri, jonka haluat asettaa.
qp.setColor(QPalette.Window, Qt.black)
Tämä muuttaa ikkunan värin mustaksi. Kun olet määrittänyt väriteeman, käytä setPalette()-funktiota paletin lisäämiseksi sovellukseesi.
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.
Yhteenveto
- PyQt on python-sidos tiedostolle C++ Käyttöliittymäkehys, Qt.
- PyQt4 ja PyQt5 ovat Riverbank Computingin kaksi tärkeintä versiota.
- PyQt-kehyksen päämoduulit ovat:
- Qt
- QtCore
- QtWidgetit
- QtGui
- QtSql
- QtNetwork
- PyQt tukee erilaisia widgetejä, kuten:
- painikkeet
- Tekstimerkit
- Tekstikentät
- Valintapainikkeet ja valintaruudut
- Työkalurivit ja valikkopalkit
- Web-paketti
- Välilehdet
- Satamalaituri
- PyQtissa interaktiivisuus toteutetaan käyttämällä signaalit ja lähtö.
- An tapahtumaa varten on käyttäjän graafisessa käyttöliittymässä suorittama toiminto (kuten painikkeen napsauttaminen).
- A signaali vastaava widget herättää sen, kun siinä tapahtuu tapahtuma.
- A aukko on toiminto, joka on kytketty signaaliin ja suoritetaan, kun signaali nostetaan.
- PyQtissa on vankka asettelumoottori ja se tukee edistynyttä asettelusuunnittelua ja -hallintaa. Nämä ovat kaksi PyQtissa usein käytettyä asettelumallia:
- Box Layout
- Ruudukon asettelu
- PyQt-suunnittelija antaa sinun luoda mukautettuja teemoja GUI-sovellukselle, ja siinä on sisäänrakennettu tuki tyylisivuille.
- qtcreator Python voidaan käyttää sekä käyttöliittymien että itsenäisten sovellusten luomiseen.