Импорт модулей и создание основного класса
Импортируем необходимые классы из PyQt5 и стандартной библиотеки sys. Создадим класс Window, наследующий QMainWindow.
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QTextEdit
В конструкторе класса Window настраиваем основное окно: устанавливаем заголовок, размеры и позицию. Добавляем QTextEdit как центральный виджет.
class Window(QMainWindow):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.setWindowTitle('Редактор текста')
self.setGeometry(300, 250, 350, 200)
self.text_edit = QTextEdit(self)
self.setCentralWidget(self.text_edit)
Основной метод и запуск приложения
Основной метод main создает объекты QApplication и Window, отображает окно и корректно завершает программу.
def main():
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
Добавление меню и пунктов меню
Импортируем QMenuBar и QMenu. Создаем меню «Файл» с пунктами «Открыть» и «Сохранить». Обработку сигналов выполняет метод action_clicked.
from PyQt5.QtWidgets import QMenuBar, QMenu
from PyQt5.QtCore import pyqtSlot, QCoreApplication
from PyQt5.QtWidgets import QFileDialog
class Window(QMainWindow):
# ... (предыдущий код) ...
def create_menu_bar(self):
menu_bar = QMenuBar(self)
self.setMenuBar(menu_bar)
file_menu = QMenu('&Файл', self)
menu_bar.addMenu(file_menu)
open_action = file_menu.addAction('&Открыть')
open_action.triggered.connect(self.action_clicked)
save_action = file_menu.addAction('&Сохранить')
save_action.triggered.connect(self.action_clicked)
@pyqtSlot()
def action_clicked(self):
sender = self.sender()
if sender.text() == 'Открыть':
self.open_file()
elif sender.text() == 'Сохранить':
self.save_file()
def open_file(self):
fname = QFileDialog.getOpenFileName(self, 'Open file')[0]
try:
with open(fname, 'r') as f:
data = f.read()
self.text_edit.setText(data)
except FileNotFoundError:
print("Файл не найден")
def save_file(self):
fname = QFileDialog.getSaveFileName(self, 'Save file')[0]
try:
with open(fname, 'w') as f:
text = self.text_edit.toPlainText()
f.write(text)
except FileNotFoundError:
print("Файл не найден")
Создан простой текстовый редактор с функциями открытия и сохранения файлов, используя PyQt. Дальнейшее развитие может включать расширение функциональности и улучшение интерфейса.