вообщем, мне было нечего делать и я сделал свой "редактор кода" на 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()