As to create your Own Python IDE tkEDI 0.1.1alfa (Как создать собственную IDE Питона)

18.01.2023 17.20MSK добавлена нумерация строк кода (tkEDI v.0.1.1alfa). Код пока не дам, ужасный, надо причесывать.
18.01.2023 17.20MSK добавлена нумерация строк кода (tkEDI v.0.1.1alfa). Код пока не дам, ужасный, надо причесывать.

02.04.2023 Хотел написать оффлайн desktop редактор кода html+css+js совмещенный с браузером (tkEDI_html_css_js_CEFpython), чтобы смотреть результат исполнения кода сразу. Хотел к Дню Дурака успеть. Но опять не получилось. Пока только скриншот.

Написал с помощью ChatGPT toy offline editor html, css, js with browser (IDE with tkinter and CEFpython)
Написал с помощью ChatGPT toy offline editor html, css, js with browser (IDE with tkinter and CEFpython)

P.S.0 Для спецов англицкого языка являются ли полными аналогами фразы 'As to create own ide Python' & 'How to create own idе Python'. А если нет, то почему?

P.S. хотел опубликовать в клубе продажников (чисто для фана, показать, как продажники могут учить и использовать Питон для своих целей). Попросили как за рекламу (ващето tkEDI - бесплатная программа, с открытым исходным кодом). В итоге нет публикации, но хэштег появился. И ищется гуглем на 3 строчке по запросу "tkEDI". На 06.02.2023 хэштег пропал. Продажникру поняли, что странно продавать один хэштег. Это ж не снег зимой. Бесценно.

Как визуально выглядит tkEDI v.0.1.0 prealfa, редактор Питона, написанный для фана (Python IDE editor)
Как визуально выглядит tkEDI v.0.1.0 prealfa, редактор Питона, написанный для фана (Python IDE editor)

Решил поразвлечься в Новый Год (2023) и для фана написать интерпретатор кода Питона.

Чисто игрушечный в пару строк.

Написал. Хотел уложиться в 5 минут. Но не судьба, за 5 не получилось.

Долго пришлось разбираться с subprocess. Но все равно не получил, что хотел.

Продолжаем.

Хотелось в терминале вывода результатов работы кода иметь Command Prompt (cmd.exe) & Python Shell одновременно. Это чтобы и код питона можно было запускать прямо в терминале, а не редакторе и команды типа ls, whoami, dir, cd, '.venv\scripts\activate', & deactivate работали прямо в нем. Принцип как сделать понял, но пока не коднул. Оставил на версию 0.2.0

Но в итоге получилась вот такой интерфейс:

Не люблю светлые, эта темно-синяя получилась. Верхнее окно редактор кода, в нижнем окне вывод интерпретатора: результат и ошибки если есть.А вот как собственно выглядит исходный код tkEDI в собственном интерфейсе плюс вывод результата и ошибок если есть
Не люблю светлые, эта темно-синяя получилась. Верхнее окно редактор кода, в нижнем окне вывод интерпретатора: результат и ошибки если есть.А вот как собственно выглядит исходный код tkEDI в собственном интерфейсе плюс вывод результата и ошибок если есть

Ну и сюда попробую выложить. Хотел изначально на хабр выложить статью и код. Но пока перестал видеть тему. Может позже, может никогда. Надо подумать стоит ли, надо ли, зачем. Как грится в узких кругах codeproject. com тоже велл сайт.

Полный код игрушки (хотя, как-то странно он тут выглядит, но что есть) :

###333#############################################333### # autor: nasingfaund aka Serj Kado # e-mail: nasingfaund@gmail.com # e-mail2: nasingfaund@ya.ru ###333#############################################333### from tkinter import Tk, Menu, Text, END, BOTH, Toplevel, Label from tkinter.filedialog import asksaveasfilename, askopenfilename import subprocess import os ################################################### # main window (wnd) & functons (code block 1) ################################################### wnd = Tk() wnd.title('tkIDE_pre_finish_version: 0.1.0 data:11.01.2023 17.46MSK') file_path = '' def set_file_path(path): global file_path file_path = path def open_file(): ### function fo open .py file path = askopenfilename(filetypes=[('Python Files', '*.py')]) with open(path, 'r') as file: ### open file for read code = file.read() ### read edi.delete('1.0', END) ### clear edi window (edi == editor) edi.insert('1.0', code) ### insert code from file to ede window set_file_path(path) ### set where our file is def save_as(): ### function for 'save file as' if file_path == '': ### if NO file's path ==>> set path path = asksaveasfilename(filetypes=[('Python Files', '*.py')]) ### set file path else: path = file_path ### else use current file path with open(path, 'w') as file: ### open file im write regime code = edi.get('1.0', END) ### berem data from begin to end in edi window file.write(code) ### write data to file set_file_path(path) def run(): ### 'run' function for py code co_res.delete("1.0", "end") ### clear 'co_res' window ('co_res' from 'code result') co_res.config(fg='white') ### set color text if file_path == '': ### if code NOT save to file!!! Need to save it first!!! save_prompt = Toplevel() ### Toplevel window (vsplivaushee okno) text = Label(save_prompt, text='Please save your code') ### show message in Toplevel window text.pack() ### pack Toplevel window with main window (wnd) return command = f'python {file_path}' ###create command from file path ###command2 = 'py -3 command' process = subprocess.Popen(['cmd.exe', '/k', command], stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) ### run cmd.exe output = None error = None output, error = process.communicate() ### poluchaem values from process (output, error) co_res.insert(END, os.getcwd()) ### show in window our work directory co_res.insert(END, '\>') co_res.insert(END, '\n') co_res.insert(END, 'output:') co_res.insert(END, '\n') co_res.insert(END, output) co_res.insert(END, '\n') co_res.insert(END, 'error:') co_res.insert(END, '\n') if error == b'': co_res.config(fg='green') ### normal text color co_res.insert(END, 'No errors') ### show that text if errors NO!!! else: co_res.config(fg='red') ### error text color co_res.insert(END, error) ### show error text def exit(): wnd.quit() ################################################### # menu (code block 2) ################################################### menu_bar = Menu(wnd) ### create menu bar file_menu = Menu(menu_bar, tearoff=0) file_menu.add_command(label='Open', command=open_file) file_menu.add_command(label='Save', command=save_as) file_menu.add_command(label='Save As', command=save_as) file_menu.add_command(label='Run', command=run) file_menu.add_command(label='Exit', command=exit) menu_bar.add_cascade(label='File', menu=file_menu) menu_bar.add_command(label='Run', command=run) wnd.config(menu=menu_bar) ################################################### # edi window (code block 3) ################################################### edi = Text() Font_tuple = ("Courier", 12, "normal") edi.configure(font=Font_tuple) edi.config(fg='white') edi.config(bg='#060b24') edi.pack(expand=1, fill=BOTH) ################################################### # co_res window (code block 4) ################################################### co_res = Text(height=12, fg='white') Font_tuple = ("Courier", 12, "normal") co_res.configure(font=Font_tuple) co_res.config(bg='#060b24') co_res.pack(expand=1, fill=BOTH) wnd.mainloop() #### Super Top Command!!!!

Как писался код:

А. Взят Виндовс, Питон3, tkinter.

Б. Искались образцы кода, кто-что делал на tkinter, IDE, text & code editors, other...

В. Окно редактора должно было быть вверху большое, терминал вывода внизу (поменьше по высоте, ширина одинаковая с окном редактора)

Г. Терминал хотел сделать совмещенный (Windows Commant Prompt == cmd.exe & Python Shell). Пока только эмулятор терминала. Команды ни cmd, ни Python Shell в него вводить нельзя (пока не работают)

Д. Нумерации строк, подстветки кода, линтера пока тоже нет. В планах на версию 0.2.0

В процессе работы использовались (но не пострадали):

Благодарности всем питонячим кодерам. Если у кого-то что-то и взял, то явно переработал с энтузиазмом и энергией.

Всех, сорян, не упомню. Смотрите ссылки выше.

Код написан очень просто.

Вшил комменты (онли инглиш). Если что непонятно — пишите.

По-моему код проще уже некуда.

Many great thanks to ALL tkinter, IDE and Python programmers for their open source code.

Especially:

also:

Всем пис, добра. Ваш насингфаунд. 21.07MSK 12.01.2023

P.S. Хотел написать статью, но пока получилась заметка. Не вижу правильную тему.

P.S.2. 14.01.2022 21.18MSK Весь в мыле, нашел пару неприятных косяков, ну и v.0.2.0 надо делать. Желательно не больше недели, максимум двух.

11
3 комментария

А разве "как" в значении данном в заголовке на английском будет as?

А разве нет? Ссылку в студию!

Дядя Гу считает, что "As to create own ide" побеждает "How to creat own ide" с перевесом в 10 000 000 проиндексированных страниц!