PyQt5 installimine Linuxi
PyQt5 installimiseks Ubuntu uusimasse versiooni käivitage järgmine käsk:
$ sudo apt installib python3-pyqt5Kui kasutate mõnda muud Linuxi jaotust, otsige paketihalduris terminit "Pyqt5" ja installige see sealt. Teise võimalusena võite PyQt5 installida pip-paketi haldurist, kasutades järgmist käsku:
$ pip installi pyqt5Pange tähele, et mõnes jaotuses peate PyQt5 õigeks installimiseks kasutama käsku pip3.
Täielik kood
Postitan eelnevalt kogu koodi, et saaksite paremini mõista artiklis hiljem selgitatud üksikute koodijuppide konteksti. Kui olete Pythoni ja PyQt5-ga tuttav, võite lihtsalt viidata allolevale koodile ja jätta selgituse vahele.
#!/ usr / bin / env python3impordi süsteem
alates PyQt5.QtWidgetid impordivad QWidget, QApplication, QVBoxLayout, QHBoxLayout
alates PyQt5.QtWidgetid impordivad QTextEdit, QLabel, QShortcut, QFileDialog, QMessageBox
alates PyQt5.QtGui import QKeySequence
PyQt5 impordi Qt-st
klassi aken (QWidget):
def __init __ (ise):
Super().__selles__()
ise.file_path = Puudub
ise.open_new_file_shortcut = QShortcut (QKeySequence ('Ctrl + O'), ise)
ise.open_new_file_shortcut.aktiveeritud.ühendama (ise.avatud_ uus_fail)
ise.save_current_file_shortcut = QShortcut (QKeySequence ('Ctrl + S'), ise)
ise.save_current_file_shortcut.aktiveeritud.ühendama (ise.save_current_file)
vbox = QVBoxLayout ()
text = "Pealkirjata fail"
ise.pealkiri = QLabel (tekst)
ise.pealkiri.setWordWrap (tõene)
ise.pealkiri.setAlignment (Qt.Qt.AlignCenter)
vbox.addWidget (ise.pealkiri)
ise.setLayout (vbox)
ise.scrollable_text_area = QTextEdit ()
vbox.addWidget (ise.scrollable_text_area)
def open_new_file (ise):
ise.file_path, filter_type = QFileDialog.getOpenFileName (ise, "Ava uus fail",
"", "Kõik failid (*)")
kui ise.faili teekond:
avatud (iseendaga).file_path, "r") kui f:
faili_sisu = f.loe ()
ise.pealkiri.setText (ise.faili teekond)
ise.scrollable_text_area.setText (faili_sisu)
muu:
ise.invalid_path_alert_message ()
def save_current_file (ise):
kui mitte ise.faili teekond:
new_file_path, filter_type = QFileDialog.getSaveFileName (ise, "Salvesta see fail
kui… "," "," Kõik failid (*) ")
if new_file_path:
ise.file_path = uus_faili_teek
muu:
ise.invalid_path_alert_message ()
tagastama Vale
file_contents = ise.scrollable_text_area.toPlainText ()
avatud (iseendaga).file_path, "w") kui f:
f.kirjuta (faili_sisu)
ise.pealkiri.setText (ise.faili teekond)
def closeEvent (ise, sündmus):
messageBox = QMessageBox ()
title = "Lõpeta rakendus?"
sõnum = "HOIATUS !!\ n \ nKui lõpetate salvestamata, muudetakse faili kõik muudatused
läheb kaduma.\ n \ nSalvestage fail enne sulgemist?"
vastus = messageBox.küsimus (ise, pealkiri, sõnum, sõnumikast.Jah | messageBox.Ei |
messageBox.Tühista, messageBox.Tühista)
kui vastus == sõnumikast.Jah:
return_value = ise.save_current_file ()
if return_value == Vale:
sündmus.ignoreeri ()
elif vastus == sõnumikast.Ei:
sündmus.nõustu ()
muu:
sündmus.ignoreeri ()
def invalid_path_alert_message (ise):
messageBox = QMessageBox ()
messageBox.setWindowTitle ("Kehtetu fail")
messageBox.setText ("Valitud failinimi või tee ei sobi. Valige a
kehtiv fail.")
messageBox.exec ()
kui __nimi__ == '__main__':
app = QApplication (sys.argv)
w = aken ()
w.showMaximized ()
sys.väljumine (rakendus.exec_ ())
Selgitus
Koodi esimene osa lihtsalt impordib mooduleid, mida kasutatakse kogu valimis:
impordi süsteemalates PyQt5.QtWidgetid impordivad QWidget, QApplication, QVBoxLayout, QHBoxLayout
alates PyQt5.QtWidgetid impordivad QTextEdit, QLabel, QShortcut, QFileDialog, QMessageBox
alates PyQt5.QtGui import QKeySequence
PyQt5 impordi Qt-st
Järgmises osas luuakse uus klass nimega „Aken”, mis pärineb klassist „QWidget”. QWidget-klass pakub Qt-s tavaliselt kasutatavaid graafilisi komponente. „Superi” abil saate tagada, et vanemobjekt Qt tagastatakse.
klassi aken (QWidget):def __init __ (ise):
Super().__selles__()
Mõned muutujad on määratletud järgmises osas. Faili tee vaikimisi väärtuseks on „Puudub” ja otseteed faili avamiseks
ise.open_new_file_shortcut = QShortcut (QKeySequence ('Ctrl + O'), ise)
ise.open_new_file_shortcut.aktiveeritud.ühendama (ise.avatud_ uus_fail)
ise.save_current_file_shortcut = QShortcut (QKeySequence ('Ctrl + S'), ise)
ise.save_current_file_shortcut.aktiveeritud.ühendama (ise.save_current_file)
QVBoxLayout klassi abil luuakse uus paigutus, millele lisatakse lapse vidinad. QLabeli klassi abil määratakse vaikefaili nimeks keskele joondatud silt.
vbox = QVBoxLayout ()text = "Pealkirjata fail"
ise.pealkiri = QLabel (tekst)
ise.pealkiri.setWordWrap (tõene)
ise.pealkiri.setAlignment (Qt.Qt.AlignCenter)
vbox.addWidget (ise.pealkiri)
ise.setLayout (vbox)
Järgmisena lisatakse paigutusele tekstiala QTextEdit objekti abil. QTextEdit vidin annab teile redigeeritava ja keritava ala, millega töötada. See vidin toetab tüüpilist kopeerimist, kleepimist, lõikamist, tagasivõtmist, uuesti tegemist, kõigi valimist jne. klaviatuuri otseteed. Samuti saate tekstipiirkonnas kasutada paremklõpsuga kontekstimenüüd.
ise.scrollable_text_area = QTextEdit ()vbox.addWidget (ise.scrollable_text_area)
"Open_new_fie" meetodit kutsutakse siis, kui kasutaja lõpetab
ise.file_path, filter_type = QFileDialog.getOpenFileName (ise, "Ava uus fail", "",
"Kõik failid (*)")
kui ise.faili teekond:
avatud (iseendaga).file_path, "r") kui f:
faili_sisu = f.loe ()
ise.pealkiri.setText (ise.faili teekond)
ise.scrollable_text_area.setText (faili_sisu)
muu:
ise.invalid_path_alert_message ()
Meetodit "save_current_file" kutsutakse alati, kui kasutaja lõpetab
kui mitte ise.faili teekond:
new_file_path, filter_type = QFileDialog.getSaveFileName (ise, "Salvesta see fail
kui… "," "," Kõik failid (*) ")
if new_file_path:
ise.file_path = uus_faili_teek
muu:
ise.invalid_path_alert_message ()
tagastama Vale
file_contents = ise.scrollable_text_area.toPlainText ()
avatud (iseendaga).file_path, "w") kui f:
f.kirjuta (faili_sisu)
ise.pealkiri.setText (ise.faili teekond)
Meetod “closeEvent” on osa PyQt5 sündmuste käitlemise API-st. Seda meetodit nimetatakse alati, kui kasutaja proovib akna sulgeda ristnupu abil või vajutades
messageBox = QMessageBox ()
title = "Lõpeta rakendus?"
sõnum = "HOIATUS !!\ n \ nKui lõpetate salvestamata, siis toimivad kõik failis tehtud muudatused
eksida.\ n \ nSalvestage fail enne sulgemist?"
vastus = messageBox.küsimus (ise, pealkiri, sõnum, sõnumikast.Jah | messageBox.Ei |
messageBox.Tühista, messageBox.Tühista)
kui vastus == sõnumikast.Jah:
return_value = ise.save_current_file ()
if return_value == Vale:
sündmus.ignoreeri ()
elif vastus == sõnumikast.Ei:
sündmus.nõustu ()
muu:
sündmus.ignoreeri ()
„Kehtetu faili“ hoiatuskastil pole kellasid ja vilesid. See edastab lihtsalt teate, et faili teed ei saa kindlaks teha.
def invalid_path_alert_message (ise):messageBox = QMessageBox ()
messageBox.setWindowTitle ("Kehtetu fail")
messageBox.setText ("Valitud failinimi või tee ei sobi. Valige kehtiv fail.")
messageBox.exec ()
Viimasena alustatakse sündmuste käitlemise ja vidinate joonistamise peamist rakendussilmu, kasutades.exec_ () ”meetod.
kui __nimi__ == '__main__':app = QApplication (sys.argv)
w = aken ()
w.showMaximized ()
sys.väljumine (rakendus.exec_ ())
Rakenduse käitamine
Salvestage lihtsalt täielik kood tekstifaili, määrake faililaiendiks “.py ”, märkige fail käivitatava faili ja käivitage see rakenduse käivitamiseks. Näiteks kui faili nimi on „simple_text_editor.py ”, peate käivitama kaks käsku:
$ chmod + x simple_text_editor.py$ ./ simple_text_editor.py
Asjad, mida saate teha koodi parandamiseks
Eespool selgitatud kood töötab paljasluudega tekstiredaktori jaoks hästi. Kuid see ei pruugi olla kasulik praktilistel eesmärkidel, kuna sellel puuduvad paljud funktsioonid, mida tavaliselt heades tekstiredaktorites näevad. Koodi saate täiustada, lisades uusi funktsioone, näiteks reanumbrid, joonte esiletõstmine, süntakside esiletõstmine, mitu vahelehte, seansi salvestamine, tööriistariba, rippmenüüd, puhvri muutuste tuvastamine jne.
Järeldus
See artikkel keskendub peamiselt PyQt-rakenduste loomise lähtekoha loomisele. Kui leiate koodist vigu või soovite midagi soovitada, on tagasiside oodatud.