-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTextEditor.py
More file actions
97 lines (89 loc) · 5.47 KB
/
TextEditor.py
File metadata and controls
97 lines (89 loc) · 5.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
"""Текстовый редактор на Qt"""
from PySide6 import QtCore, QtGui, QtWidgets
from PySide6.QtWidgets import QFileDialog, QMessageBox
class Ui_MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super(Ui_MainWindow, self).__init__()
self.setupUi(self)
self.btnOpen.clicked.connect(self.open_file)
self.btnSaveAs.clicked.connect(self.save_file_as)
def open_file(self):
"""
Диалоговое окно открытия файла:
1. После self, выберите файл - заголовок окна открытия файла.
2. Устанавливает по умолчанию имя файла которое требуется открыть
3. Устанавливает только выбранные расширения при открытии файлов
4. [0] - Инедкс считывания, говорит о том, с какого символа нужно начать считывание файла
"""
file_path = QFileDialog.getOpenFileName(self, 'Выберите файл', '', 'Только текстовые файлы (*.txt)')[0]
# Если файл не выбран то программа не закроется с ошибкой
if not file_path:
return
# Открытие файла с ключом 'r' для чтения, as f открывает его в переменной f, encoding='utf-8' - выбор кодировки.
with open(file_path, "r", encoding='utf-8') as f:
# Читает файл в переменную text
text = f.read()
# заполняет textEdit из переменной text
self.textEdit.setText(text)
def save_file_as(self):
"""
Диалоговое окно сохранения файла:
1. После self, Куда сохранить - заголовок окна сохранения файла.
2. Устанавливает по умолчанию имя файла для сохранения.
3. Устанавливает только выбранные расширения при сохранении файлов
4. [0] - Инедкс считывания, говорит о том с какого символа нужно начать считывание файла
"""
file_path = QFileDialog.getSaveFileName(self, 'Куда сохранить', '', 'Только (*.txt)')[0]
# Если файл не выбран то программа не закроется с ошибкой
if not file_path:
return
# Открытие файла с ключом 'w' для записи, as f открывает его в переменной f, encoding='utf-8' - выбор кодировки.
with open(file_path, "w", encoding='utf-8') as f:
# Считывает текст из textEdit в переменную text
text = self.textEdit.toPlainText()
# Записывает файл из переменной text
f.write(text)
"""
Системное сообещние:
information - иконка с восклицательным знаком, при желании можно заменить.
"Сообщение" - это название окна.
"Файл сохранен" - это текст сообщения.
"""
QMessageBox.information(self, "Сообщение", "Файл сохранен")
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(646, 454)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
self.verticalLayout.setObjectName("verticalLayout")
self.textEdit = QtWidgets.QTextEdit(self.centralwidget)
self.textEdit.setObjectName("textEdit")
self.verticalLayout.addWidget(self.textEdit)
self.frame = QtWidgets.QFrame(self.centralwidget)
self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame.setObjectName("frame")
self.horizontalLayout = QtWidgets.QHBoxLayout(self.frame)
self.horizontalLayout.setObjectName("horizontalLayout")
self.btnOpen = QtWidgets.QPushButton(self.frame)
self.btnOpen.setObjectName("btnOpen")
self.horizontalLayout.addWidget(self.btnOpen)
self.btnSaveAs = QtWidgets.QPushButton(self.frame)
self.btnSaveAs.setObjectName("btnSaveAs")
self.horizontalLayout.addWidget(self.btnSaveAs)
self.verticalLayout.addWidget(self.frame)
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "Текстовый редактор"))
self.btnOpen.setText(_translate("MainWindow", "Открыть"))
self.btnSaveAs.setText(_translate("MainWindow", "Сохранить как..."))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
window = Ui_MainWindow()
window.show()
sys.exit(app.exec())