Pyqt-Käyttöliittymäkirjasto Pyqt-Käyttöliittymäkirjasto

Pyqt-Käyttöliittymäkirjasto Pyqt-Käyttöliittymäkirjasto

PyQt-käyttöliittymäkirjasto PyQt-käyttöliittymäkirjasto • PyQt on laaja ja yleinen kirjasto – Tehokas grafiikka ja monipuoliset ominaisuudet – Toimii monilla eri alustoilla – PyQt5 pitää sisällään 620 luokkaa ja 6000 funktiota ja metodia • Muita vastaavia käyttöliittymäkirjastoja: – PySide, PyGTK, wxPython, Tkinter • Qt on käytettävissä monesta muustakin kielestä – PyQt on joukko sidontoja alla olevaan Qt-toteutukseen – PyQt on toteutettu joukkona Python moduuleita • Keskeinen käsite ovat käyttöliittymäkomponentit (widget) – Ne vastaavat usein suoraan ikkunaan ilmestyviä graafisia olioita 2 Esimerkki: proseduaalinen ohjelmointi • Proseduraalisessa ohjelmoinnissa luodaan aliohjelmia – Tyypillisesti muuttavat ohjelman tietorakenteiden tilaa • Oheinen luo ikkunan PyQt5:llä import sys from PyQt5.QtWidgets import QWidget, QPushButton, QApplication def Example(): app = QApplication(sys.argv) w = QWidget() b = QPushButton('Push', w) b.clicked.connect(w.close) w.show() sys.exit(app.exec_()) 3 Esimerkki: sama olio-ohjelmoinnilla • Olio-ohjelmoinnissa luomme luokan – Perustoiminnallisuus rakennetaan olioon, jota käytetään • Ohessa widget-olion kutsuminen yms. on jätetty pois class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.__btn = QPushButton('Push', self) self.show() self.activate_close() def activate_close(self): self.__btn.clicked.connect(self.close) self.show() 4 Havaintoja edellisten esimerkkien eroista • Proseduraaliversiossa voisimme antaa argumentteja – Näin aliohjelma olisi yleiskäyttöisempi – Toiminnallisuus on kuitenkin sidottu tuohon aliohjelmaan • Olio-ohjelmointiversiossa voisimme lisätä metodeja – Mutta oliomme osaa jo tosi monta asiaa • Kirjoittamalla help(Example) huomaa eron – Toiminnallisuus on sidottu olioon ja seuraa sen mukana 5 PyQt-pohjaiset sovellukset: QApplication • PyQt-pohjaisen sovelluksen varsinainen käyttöliittymä on QApplication – Yhdellä sovelluksella on vain yksi QApplication • Tyypillisesti alustetaan heti pääohjelman alussa – Käynnistetään sitten kun koko käyttöliittymä on alustettu • Se on kuuntelija-olio, joka pyörittää tapahtumasilmukkaa (event loop), jossa odotellaan tapahtumia – Jäädään odottamaan päättymistä • Ikkunoita, komponentteja ja säikeitä voi olla vaikka kuinka monta yhdessä QApplication-oliossa – Rinnakkaisuus on luonteva piirre reaktiivisille järjestelmille 6 Käyttöliittymäkomponentit (widget) • Keskeinen käsite ovat käyttöliittymäkomponentit (widget) – Jatkossa lyhyesti ”komponentti” – Ne vastaavat usein suoraan ikkunaan ilmestyviä graafisia olioita – Python ohjelman sisällä komponentit näkyvät olioina – Ominaisuuksien periminen kirjastosta on keskeistä • Ominaisuudet muodostavat hierarkian • Perimällä itse tehdyt komponentit osaavat perusasiat • Myös graafisesti komponentit muodostavat hierarkian – Ikkunassa komponentit voivat olla toisensa sisällä • Olioiden tyypit (luokat) rajoittavat tietenkin tätä – Ohjelman sisällä tämä näkyy olioiden välisinä viittauksina 7 Ikkunat • Tavallisesti käyttöliittymän komponentit ovat ikkunoissa – Ikkunat sinänsä ovat ympäröivän käyttöjärjestelmän ominaisuus – Qt ei suinkaan (oletusarvoisesti) hallitse koko näyttöä • Komponentin (ja sen alikomponenttien) sisältö näkyy ikkunassa – Yleensä alikomponentteja on monia • Ikkunan kehystys on ympäröivän järjestelmän asia – Eri ympäristöissä sama Qt-käyttöliittymä näyttää erilaiselta – Esimerkiksi valikkojen paikat • Monet oletusarvot ovat ympäristöriippuvaisia – Kirjaisimien koot, tyylit, värit, kursorin muoto, jne. 8 Komponenttityypit • Komponentteja on kirjastossa laaja valikoima – Usein haluttu löytyy suoraan kirjastosta – Itse voi tietysti tehdä lisää perimällä jonkun valmiin komponentin – Qt tukee vapaata piirtämistä ja jopa raakaa grafiikkaa • Usein käytettyjä ja yksinkertaisia ovat esimerkiksi – Painonapit (QPushButton) – Valikot (erityisesti menuBar) – Tekstikomponentit (Qlabel, QLineEdit) – Rastiruudut (QCheckBox) – Erilaiset kuvat (esim. QPixmap) • On myös monimutkaisia komponentteja – Esimerkiksi piirtopintoja (esim. QGraphicsScene) 9.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    9 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us