@arkonst123

Как сделать открытие py файлов с помощью своего редактора?

вообщем, мне было нечего делать и я сделал свой "редактор кода" на python с помощью библиотеки pyqt5.
Как мне сделать так, чтобы я мог открывать .py файлы с помощью моего IDE ?

вот код на всякий случай:
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import sys
import os




icon = os.path.relpath("icon/fotor_2023-3-8_14_57_30.png")
def exitbuttonC():
    exit()

def sarC():
    if filefor == ".py":
        tfpvT = pv.toPlainText()
        wfpwT = open(fpw, "w", encoding="UTF-8")
        wfpwT.write(tfpvT)

        os.startfile(fpw)
    else:
        err3 = QMessageBox()
        err3.setWindowTitle("ошибка")
        err3.setText("Невозможно запустить файл, формат которого не .py !")
        err3.setIcon(QMessageBox.Critical)
        err3.exec_()

def saveC():
    inf = QMessageBox()
    inf.setWindowTitle("успешно!")
    inf.setText("Данные сохранены успешно!")
    inf.setIcon(QMessageBox.Information)
    inf.exec_()

    tfpv = pv.toPlainText()
    if filefor == ".py":
        wfpw = open(fpw, "w", encoding="UTF-8")
    else:
        wfpw = open(fpw, "w", encoding="ANSI")
    wfpw.write(tfpv)

def owptf():
    try:
        global fpw
        fpw = QFileDialog.getOpenFileName()[0]
        global filename, filefor
        filename, filefor = os.path.splitext(fpw)
        if filefor == ".py":
            pass
        else:
            warn = QMessageBox()
            warn.setWindowTitle("Внимание!")
            warn.setText("Формат вашего файла не .py, поэтому некоторые вещи могут работать некорректно или вообще не работать!")
            warn.setIcon(QMessageBox.Warning)
            warn.exec_()
        ide = QWidget()
        ide.setStyleSheet("background-color:#FFB6C1")
        pathtopyW.setCentralWidget(ide)
        if filefor == ".py":
            rfpw = open(fpw, "r", encoding="UTF-8")
        else:
            rfpw = open(fpw, "r", encoding="ANSI")

        #писать сюда
        global pv
        pv = QTextEdit(ide)
        pv.setStyleSheet("border-radius: 4px; background-color: #383434; color: White")
        pv.setFont(QFont("Calibri", 12))
        pv.setText(rfpw.read())
        pv.setGeometry(5,60,1356,690)

        #сохранить
        save = QPushButton(ide)
        save.setStyleSheet("border-radius: 4px; background-color: #383434; color: White")
        save.setText("Сохранить")
        save.clicked.connect(saveC)
        save.setGeometry(5, 5, 80, 40)

        #сохранить и запустить
        sar = QPushButton(ide)
        sar.setStyleSheet("border-radius: 4px; background-color: #383434; color: White")
        sar.setText("Сохранить и запустить")
        sar.clicked.connect(sarC)
        sar.setGeometry(130, 5, 200, 40)

        #dвыход
        exitbutton = QPushButton(ide)
        exitbutton.setStyleSheet("border-radius: 4px; background-color: FireBrick; color: White")
        exitbutton.setText("Выход")
        exitbutton.clicked.connect(exitbuttonC)
        exitbutton.setGeometry(1280, 5, 70, 40)


    except UnicodeDecodeError:
        err2 = QMessageBox()
        err2.setWindowTitle("ошибка")
        err2.setText("Выбраный вами файл не является .py или другим текстовым форматом!\n* после нажатия на <<Ок>> NotePy перезапустится! *")
        err2.setIcon(QMessageBox.Critical)
        err2.exec_()

        python = sys.executable
        os.execl(python, python, * sys.argv)
    except FileNotFoundError:
        err = QMessageBox()
        err.setWindowTitle("ошибка")
        err.setText("Похоже что вы не выбрали файл, либо не удалось найти выбраный вами файл\n* после нажатия на <<Ок>> NotePy перезапустится! *")
        err.setIcon(QMessageBox.Critical)
        err.exec_()

        python = sys.executable
        os.execl(python, python, * sys.argv)





def pathtopy():
    app = QApplication(sys.argv)
    global pathtopyW
    pathtopyW = QMainWindow()
    pathtopyW.setWindowTitle("NotePy")
    pathtopyW.setFixedSize(1366, 768)
    pathtopyW.setWindowState(Qt.WindowFullScreen)
    pathtopyW.setObjectName("windowQ")
    pathtopyW.setStyleSheet("#windowQ{background-color:#7908AA}")
    pathtopyW.setWindowIcon(QIcon(icon))


    #путь сюда
    well = QLabel(pathtopyW)
    well.setText("Добро пожаловать в NotePy!")
    well.setFont(QFont("Calibri", 15))
    well.setGeometry(540, 350, 400, 20)


    pathtofile = QPushButton(pathtopyW)
    pathtofile.setStyleSheet("border-radius:4px; background: #383434; color: White")
    pathtofile.setText("Указать путь до файла")
    pathtofile.clicked.connect(owptf)
    pathtofile.setGeometry(560,400,200,40)

    exitmenu = QPushButton(pathtopyW)
    exitmenu.setStyleSheet("border-radius: 4px; background-color: FireBrick; color: White")
    exitmenu.setText("Выход")
    exitmenu.clicked.connect(exitbuttonC)
    exitmenu.setGeometry(1280, 5, 70, 40)





    pathtopyW.show()
    sys.exit(app.exec_())


if __name__ == "__main__":
    pathtopy()
  • Вопрос задан
  • 67 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы