73 lines
2.2 KiB
Python
73 lines
2.2 KiB
Python
from tkinter import *
|
|
import sys
|
|
from tkinter.filedialog import askopenfilename, asksaveasfilename
|
|
|
|
|
|
def PyIDE():
|
|
def openFile():
|
|
file = askopenfilename(defaultextension=".py",
|
|
filetypes=[("Python .py", ".py"), ("Python .pyw", ".pyw")])
|
|
|
|
if file != "":
|
|
with open(file, "r") as openfile:
|
|
input.delete(0.0, END)
|
|
input.insert(0.0, openfile.read())
|
|
|
|
def save():
|
|
file = asksaveasfilename(defaultextension=".py",
|
|
filetypes=[("Python .py", ".py"), ("Python .pyw", ".pyw")])
|
|
|
|
if file != "":
|
|
with open(file, "w") as saveFile:
|
|
saveFile.write(input.get(0.0, END))
|
|
|
|
class TextRedirector(object):
|
|
def __init__(self, widget, tag="stdout"):
|
|
self.widget = widget
|
|
self.tag = tag
|
|
|
|
def write(self, str):
|
|
output.delete(0.0, END)
|
|
self.widget.configure(state="normal")
|
|
self.widget.insert("end", str, (self.tag,))
|
|
self.widget.configure(state="disabled")
|
|
self.widget.see(END)
|
|
|
|
def run():
|
|
exec(input.get(0.0, END))
|
|
|
|
rootInterpreter = Tk()
|
|
rootInterpreter.title("Terminal")
|
|
rootInterpreter.geometry("200x200")
|
|
rootInterpreter.minsize(200, 200)
|
|
|
|
menu = Menu(rootInterpreter)
|
|
rootInterpreter.config(menu=menu)
|
|
filemenu = Menu(menu)
|
|
menu.add_cascade(label="File", menu=filemenu)
|
|
filemenu.add_command(label="New")
|
|
filemenu.add_command(label="Open", command=openFile)
|
|
filemenu.add_command(label="Save", command=save)
|
|
filemenu.add_command(label="Save As", state=DISABLED)
|
|
filemenu.add_separator()
|
|
filemenu.add_command(label="Exit", command=sys.exit)
|
|
|
|
output = Text(rootInterpreter, state=DISABLED, wrap="word")
|
|
output.configure(state=NORMAL)
|
|
output.configure(state=DISABLED)
|
|
output.pack(side=TOP, expand=YES, fill=BOTH)
|
|
|
|
input = Text(rootInterpreter)
|
|
input.focus()
|
|
input.pack(side=BOTTOM, expand=YES, fill=BOTH)
|
|
|
|
sys.stderr = TextRedirector(output, "stderr")
|
|
|
|
sys.stdout = TextRedirector(output, "stdout")
|
|
|
|
rootInterpreter.mainloop()
|
|
|
|
# rootInterpreter.protocol("WM_DELETE_WINDOW", closeApp)
|
|
|
|
|
|
PyIDE()
|