Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 3, 2016 19:30:03

zarich
Зарегистрирован: 2016-11-03
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Текстовой редактор

Всем привет, я новичок в 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)

Офлайн

#2 Ноя. 3, 2016 19:58:25

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Текстовой редактор

zarich
Дорогой, вы же не водитель трамвая, вы же программист. Что значит “не могу сохранить”? Это такая вот формулировка проблемы? Где конкретика? Вы не можете, потому что мама не разрешает, или в вашем штате законы не позволяют, или религиозные проблемы?

Программа не выполняется - покажи какая ошибка возникает.



Офлайн

#3 Ноя. 3, 2016 20:03:35

zarich
Зарегистрирован: 2016-11-03
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Текстовой редактор

FishHook
zarichДорогой, вы же не водитель трамвая, вы же программист. Что значит “не могу сохранить”? Это такая вот формулировка проблемы? Где конкретика? Вы не можете, потому что мама не разрешает, или в вашем штате законы не позволяют, или религиозные проблемы? Программа не выполняется - покажи какая ошибка возникает.
Вот такая ошибка,
Traceback (most recent call last):
File “/home/aygizar/Документы/Project/window.py”, line 70, in saveAs
f = open(filename, ‘w’)
TypeError: invalid file: ('/home/aygizar/ersfhjgk', ‘All Files (*)’)

Офлайн

#4 Ноя. 3, 2016 20:14:18

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Текстовой редактор

зачем вы в метод передаете self?

 QFileDialog.getOpenFileName(self, 'Open File', '/home', "All Files (*);;Python Files (*.py)")



Офлайн

#5 Ноя. 3, 2016 20:15:43

zarich
Зарегистрирован: 2016-11-03
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Текстовой редактор

FishHook
зачем вы в метод передаете self?
я не знаю(( можете объяснить?)

Офлайн

#6 Ноя. 3, 2016 20:29:11

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Текстовой редактор

тут вероятно self и правда нужен, здесь я скорее всего не прав.
А вот так цу вас работает

  QFileDialog.getOpenFileName(self, 'Open File', '/home')



Офлайн

#7 Ноя. 3, 2016 21:31:27

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2751
Репутация: +  184  -
Профиль   Отправить e-mail  

Текстовой редактор

1) Никаких self.initUI() быть не должно.
2) Если мне память не изменяет, то QFileDialog.getSaveFileName возвращает не имя файла, а кортеж, отсюда и ошибка.
3) В место f.write(“txt”) должно быть f.write(txt)

P.S. self правильно написан.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Отредактировано Rodegast (Ноя. 3, 2016 21:33:26)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version