#!/usr/bin/env python3 # coding: utf-8 powitanie = ''' Prosty edytor plików tekstowych Demonstracja użycia biblioteki Qt w wersji 4 do tworzenia aplikacji GUI. Program zbudowano dla celów poglądowych. Nie jest on kompletny; użytkowanie grozi utratą danych. ''' from PyQt4.QtCore import * from PyQt4.QtGui import * class ApplicationWindow(QMainWindow): zmienione = False def __init__(self, title): QMainWindow.__init__(self, None) self.setObjectName('demo') self.setAttribute(Qt.WA_DeleteOnClose) mm = self.menuBar().addMenu('&Plik') mm.addAction('&Nowy', self.nowyPlik ,Qt.CTRL + Qt.Key_N) id = mm.addAction('&Otwórz'.decode('utf-8'), self.otworzPlik, Qt.CTRL + Qt.Key_O) id = mm.addAction('&Zapisz', self.zapiszPlik, Qt.CTRL + Qt.Key_S) id = mm.addAction('Zapisz j&ako', self.zapiszPlikJako) mm.addSeparator() mm.addAction('&Drukuj', self.makieta, Qt.CTRL + Qt.Key_P) mm.addSeparator() mm.addAction('&Zakończ'.decode('utf-8'), qApp, SLOT('quit()'), Qt.CTRL + Qt.Key_Q) mm = self.menuBar().addMenu("&Edycja") mm.addAction('&Znajdź'.decode('utf-8'), self.makieta, Qt.CTRL + Qt.Key_F) mm = self.menuBar().addMenu("&Pomoc") mm.addAction('&O programie', self.about, Qt.Key_F1) self.setWindowTitle(title.decode('utf-8')) self.tb = QTextEdit(self) self.setFocusProxy(self.tb) self.setCentralWidget(self.tb) self.tb.setText(powitanie.decode('utf-8')) self.sb = self.statusBar() self.sb.showMessage('Gotowe') self.sb.show() self.fn = None def about(self): QMessageBox.about(self, 'Info', u"Szkielet aplikacji GUI\nutworzony przy użyciu biblioteki Qt4") def nowyPlik(self): if self.zmienione: self.zapiszPlikJako() self.tb.setText('') self.sb.showMessage('Nowy bufor') def otworzPlik(self): if self.fn == None: nazwa = '' else: nazwa = self.fn if self.zmienione: self.zapiszPlikJako() nazwa = QFileDialog.getOpenFileName(self, nazwa, '*') if not nazwa.isEmpty(): self.tb.setText(open(nazwa).read().decode('utf-8')) self.fn = nazwa self.sb.showMessage('Wczytano '+self.fn) def zapiszPlik(self): if self.fn: plik = open(self.fn, 'w') plik.write(str(self.tb.text()).encode('utf-8')) plik.close() self.sb.showMessage('Zapisano '+self.fn) else: self.zapiszPlikJako() def zapiszPlikJako(self): if self.fn == None: nazwa = '' else: nazwa = self.fn nazwa = QFileDialog.getSaveFileName(self, nazwa, '*') if not nazwa.isEmpty(): self.fn = nazwa self.zapiszPlik() def makieta(self): QMessageBox.warning(self, 'Info', 'Do zrobienia...') app = QApplication([]) w = ApplicationWindow("aplikacja Ot") w.resize(500,300) w.show() app.connect(app, SIGNAL('lastWindowClosed()'), app, SLOT('quit()')) app.exec_()