Найти - Пользователи
Полная версия: Текстовой редактор
Начало » GUI » Текстовой редактор
1
zarich
Всем привет, я новичок в 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_())
FishHook
zarich
Дорогой, вы же не водитель трамвая, вы же программист. Что значит “не могу сохранить”? Это такая вот формулировка проблемы? Где конкретика? Вы не можете, потому что мама не разрешает, или в вашем штате законы не позволяют, или религиозные проблемы?

Программа не выполняется - покажи какая ошибка возникает.
zarich
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 (*)’)
FishHook
зачем вы в метод передаете self?
 QFileDialog.getOpenFileName(self, 'Open File', '/home', "All Files (*);;Python Files (*.py)")
zarich
FishHook
зачем вы в метод передаете self?
я не знаю(( можете объяснить?)
FishHook
тут вероятно self и правда нужен, здесь я скорее всего не прав.
А вот так цу вас работает
  QFileDialog.getOpenFileName(self, 'Open File', '/home')
Rodegast
1) Никаких self.initUI() быть не должно.
2) Если мне память не изменяет, то QFileDialog.getSaveFileName возвращает не имя файла, а кортеж, отсюда и ошибка.
3) В место f.write(“txt”) должно быть f.write(txt)

P.S. self правильно написан.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB