Супер просто и легко создать настольное приложение, похожее на блокнот.

Это руководство начального уровня для тех, кто хочет изучить PyQt6 и начать работу. Я не буду объяснять все шаг за шагом, но если вам интересно, дайте мне знать, чтобы составить полное руководство.

Прежде чем погрузиться в код, обязательно скачайте pyqt6.

pip install PyQt6
import sys
from PyQt6.QtWidgets import QApplication, QMainWindow, QTextEdit, QFileDialog, QMenuBar, QStatusBar, QToolBar
from PyQt6.QtCore import QTextStream
from PyQt6.QtWidgets import QWidgetAction

class Notepad(QMainWindow):
    def __init__(self):
        super().__init__()

        # Set window properties
        self.setWindowTitle('Notepad')
        self.resize(400, 400)

        # Create text edit widget
        self.text_edit = QTextEdit(self)
        self.setCentralWidget(self.text_edit)

        # Create menu bar
        self.menu_bar = QMenuBar(self)
        self.setMenuBar(self.menu_bar)

        # Create file menu
        self.file_menu = self.menu_bar.addMenu('File')

        # Create open action
        self.open_action = self.file_menu.addAction('Open')
        self.open_action.triggered.connect(self.open_file)

        # Create save action
        self.save_action = self.file_menu.addAction('Save')
        self.save_action.triggered.connect(self.save_file)

        # Create status bar
        self.status_bar = QStatusBar(self)
        self.setStatusBar(self.status_bar)
        
        # Set window properties
        self.setWindowTitle('Notepad')
        self.resize(400, 400)

        # Create text edit widget
        self.text_edit = QTextEdit(self)
        self.setCentralWidget(self.text_edit)

        # Create menu bar
        self.menu_bar = QMenuBar(self)
        self.setMenuBar(self.menu_bar)

        # Create file menu
        self.file_menu = self.menu_bar.addMenu('File')

        # Create open action
        # self.open_action = QAction('Open', self)
        # self.open_action.triggered.connect(self.open_file)

        # Add open action to file menu
        self.file_menu.addAction(self.open_action)

        # Create save action
        # self.save_action = QAction('Save', self)
        # self.save_action.triggered.connect(self.save_file)

        # Add save action to file menu
        self.file_menu.addAction(self.save_action)

        # Create toolbar
        self.tool_bar = QToolBar(self)
        self.addToolBar(self.tool_bar)

        # Add open action to toolbar
        self.tool_bar.addAction(self.open_action)

        # Add save action to toolbar
        self.tool_bar.addAction(self.save_action)


    def open_file(self):
        options = QFileDialog.Options()
        options |= QFileDialog.ReadOnly
        file_name, _ = QFileDialog.getOpenFileName(self, 'Open File', '', 'All Files (*);;Text Files (*.txt)', options=options)
        if file_name:
            with open(file_name, 'r') as f:
                stream = QTextStream(f)
                self.text_edit.setPlainText(stream.readAll())
            self.status_bar.showMessage(f'Opened {file_name}', 2000)

    def save_file(self):
        options = QFileDialog.Options()
        options |= QFileDialog.DontUseNativeDialog
        file_name, _ = QFileDialog.getSaveFileName(self, 'Save File', '', 'All Files (*);;Text Files (*.txt)', options=options)
        if file_name:
            with open(file_name, 'w') as f:
                stream = QTextStream(f)
                stream << self.text_edit.toPlainText()
            self.status_bar.showMessage(f'Saved {file_name}', 2000)


app = QApplication(sys.argv)
notepad = Notepad()
notepad.show()
sys.exit(app.exec())