Форум сайта python.su
Всем привет, я новичок в Python. Помогите найти ошибку в коде текстового редактора, не могу сохранить файл) Это курсовая работа. Еще кто-нибудь знают туториалы на pyqt5 всеми модулями на русском?) а то все на англ.
import sys from PyQt5.QtWidgets import (QApplication, QMainWindow, QWidget, QPushButton, QAction, QTextEdit, QFileDialog) from PyQt5.QtGui import QIcon from PyQt5.QtCore import pyqtSlot class App(QMainWindow): def __init__(self): super().__init__() self.title = 'SimpleEditor' self.left = 10 self.top = 10 self.width = 800 self.height = 600 self.initUI() def initUI(self): self.textEdit = QTextEdit() self.setCentralWidget(self.textEdit) self.setWindowTitle(self.title) self.setGeometry(self.left, self.top, self.width, self.height) self.statusBar().showMessage('This is statusbar') #Тулбар mainMenu = self.menuBar() fileMenu = mainMenu.addMenu('File') editMenu = mainMenu.addMenu('Edit') viewMenu = mainMenu.addMenu('View') searchMenu = mainMenu.addMenu('Search') toolsMenu = mainMenu.addMenu('Tools') helpMenu = mainMenu.addMenu('Help') #Новый файл newAction = QAction('New', self) newAction.setShortcut('Ctrl+N') newAction.setStatusTip('Create a file') newAction.triggered.connect(self.newFile) #открыть файл openAction = QAction(QIcon('open.png'), 'Open', self) openAction.setShortcut('Ctrl+O') openAction.setStatusTip('Open new File') openAction.triggered.connect(self.openFile) #Сохранить файл saveAction = QAction(QIcon('save.png'), 'Save As', self) saveAction.setShortcut('Ctrl+s') saveAction.setStatusTip('Save as file') saveAction.triggered.connect(self.saveAs) #Выход exitAction = QAction('Exit', self) exitAction.setShortcut('Ctrl+Q') exitAction.setStatusTip('Exit application') exitAction.triggered.connect(self.close) fileMenu.addAction(newAction) fileMenu.addAction(openAction) fileMenu.addAction(saveAction) fileMenu.addAction(exitAction) self.show() def newFile(self): self.textEdit.setText("") def saveAs(self): filename = QFileDialog.getSaveFileName(self) f = open(filename, 'w') txt = self.textEdit.toPlainText() f.write("txt") f.close() def openFile(self): fname = QFileDialog.getOpenFileName(self, 'Open File', '/home', "All Files (*);;Python Files (*.py)")[0] f = open(fname, 'r') with f: data = f.read() self.textEdit.setText(data) if __name__ == '__main__': app = QApplication(sys.argv) ex = App() sys.exit(app.exec_())
Отредактировано zarich (Ноя. 3, 2016 19:30:39)
Офлайн
zarich
Дорогой, вы же не водитель трамвая, вы же программист. Что значит “не могу сохранить”? Это такая вот формулировка проблемы? Где конкретика? Вы не можете, потому что мама не разрешает, или в вашем штате законы не позволяют, или религиозные проблемы?
Программа не выполняется - покажи какая ошибка возникает.
Офлайн
FishHookВот такая ошибка,
zarichДорогой, вы же не водитель трамвая, вы же программист. Что значит “не могу сохранить”? Это такая вот формулировка проблемы? Где конкретика? Вы не можете, потому что мама не разрешает, или в вашем штате законы не позволяют, или религиозные проблемы? Программа не выполняется - покажи какая ошибка возникает.
Офлайн
зачем вы в метод передаете self?
QFileDialog.getOpenFileName(self, 'Open File', '/home', "All Files (*);;Python Files (*.py)")
Офлайн
FishHookя не знаю(( можете объяснить?)
зачем вы в метод передаете self?
Офлайн
тут вероятно self и правда нужен, здесь я скорее всего не прав.
А вот так цу вас работает
QFileDialog.getOpenFileName(self, 'Open File', '/home')
Офлайн
1) Никаких self.initUI() быть не должно.
2) Если мне память не изменяет, то QFileDialog.getSaveFileName возвращает не имя файла, а кортеж, отсюда и ошибка.
3) В место f.write(“txt”) должно быть f.write(txt)
P.S. self правильно написан.
Отредактировано Rodegast (Ноя. 3, 2016 21:33:26)
Офлайн