-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfile_menu.py
More file actions
113 lines (97 loc) · 5.03 KB
/
file_menu.py
File metadata and controls
113 lines (97 loc) · 5.03 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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QMenu, QFileDialog, QMessageBox
from PyQt5.QtGui import QKeySequence, QColor
class FileMenu(QMenu):
def __init__(self, menu_bar):
self.window = menu_bar.window
self.menu_bar = menu_bar
super().__init__("&Файл")
self.f_name = ''
self.action_open = QtWidgets.QAction()
self.action_save = QtWidgets.QAction()
self.action_save_as = QtWidgets.QAction()
self.action_new = QtWidgets.QAction()
self.action_quit = QtWidgets.QAction()
self.add_action(self.action_new, "Новый", QKeySequence.New, self.new_file)
self.add_action(self.action_open, "Открыть", QKeySequence.Open, self.open_file)
self.addSeparator()
self.add_action(self.action_save, "Сохранить", QKeySequence.Save, self.save_file)
self.add_action(self.action_save_as, "Сохранить как...", QKeySequence.SaveAs, self.save_file_as)
self.addSeparator()
self.add_action(self.action_quit, "Выйти", QKeySequence.Quit, self.quit)
def add_action(self, action, name, shortcut, connect):
action.setText(name)
action.setShortcut(shortcut)
action.triggered.connect(connect)
self.addAction(action)
def open_file(self):
self.f_name = QFileDialog.getOpenFileName(self.window, "Открыть файл", filter='Text files (*.txt)',
options=QFileDialog.DontUseNativeDialog)[0]
try:
with open(self.f_name, 'r') as f:
self.window.text_edit.setTextColor(QColor("black"))
self.window.text_edit.setTextBackgroundColor(QColor("white"))
data = f.read()
self.window.text_edit.setText(data)
except FileNotFoundError:
print("No such file")
except PermissionError:
self.f_name = ''
error = QMessageBox()
error.setWindowTitle("Ошибка")
error.setText("Не удалось сохранить файл. "
"Недостаточно прав для сохранения файла. "
"Убедитесь в правильности указанного адреса и попробуйте еще раз.")
error.setIcon(QMessageBox.Warning)
error.setStandardButtons(QMessageBox.Ok)
error.exec_()
def save_file(self):
if self.f_name == '':
self.f_name = QFileDialog.getSaveFileName(self.window, "Сохранить файл", filter='Text files (*.txt)',
options=QFileDialog.DontUseNativeDialog)[0]
try:
with open(self.f_name, 'w') as f:
text = self.window.text_edit.toPlainText()
f.write(text)
except FileNotFoundError:
print("No such file")
except PermissionError:
self.f_name = ''
error = QMessageBox()
error.setWindowTitle("Ошибка")
error.setText("Не удалось сохранить файл. "
"Недостаточно прав для сохранения файла. "
"Убедитесь в правильности указанного адреса и попробуйте еще раз.")
error.setIcon(QMessageBox.Warning)
error.setStandardButtons(QMessageBox.Ok)
error.exec_()
else:
with open(self.f_name, 'w') as f:
text = self.window.text_edit.toPlainText()
f.write(text)
def save_file_as(self):
self.f_name = QFileDialog.getSaveFileName(self.window, "Сохранить файл", filter='Text files (*.txt)',
options=QFileDialog.DontUseNativeDialog)[0]
try:
with open(self.f_name, 'w') as f:
text = self.window.text_edit.toPlainText()
f.write(text)
except FileNotFoundError:
print("No such file")
except PermissionError:
self.f_name = ''
error = QMessageBox()
error.setWindowTitle("Ошибка")
error.setText("Не удалось сохранить файл. "
"Недостаточно прав для сохранения файла. "
"Убедитесь в правильности указанного адреса и попробуйте еще раз.")
error.setIcon(QMessageBox.Warning)
error.setStandardButtons(QMessageBox.Ok)
error.exec_()
def new_file(self):
self.f_name = ''
self.window.text_edit.clear()
self.window.text_edit.setTextColor(QColor("black"))
self.window.text_edit.setTextBackgroundColor(QColor("white"))
def quit(self):
self.window.close()