-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtkinter.py
More file actions
160 lines (132 loc) · 5.37 KB
/
tkinter.py
File metadata and controls
160 lines (132 loc) · 5.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
#!/usr/bin/env python3.6
import os
import os.path
from tkinter import *
from tkinter import ttk
from tkinter import messagebox
from tkinter import filedialog
from tkinter import simpledialog
from tkinter.scrolledtext import ScrolledText
class AppUI(Frame):
def __init__(self, master=None):
Frame.__init__(self, master, relief=FLAT, bd=0)
self.pack(fill=BOTH, expand=True)
self.master.title("PyCode - Code Editor")
self.load_menu_bar()
self.load_widgets()
def about_dialog(self):
dialog = messagebox.showinfo(
"About", "A Simple Text Editor by Shardul Nalegave <nalegaveshardul40@gmail.com>")
def new_doc(self):
self.editor.delete("1.0", "end-1c")
self.master.title("PyCode - Code Editor")
def open_file(self):
try:
self.status_bar["text"] = "Opening File..."
loc = filedialog.askopenfilename()
self.file = os.path.basename(loc)
self.filePath = loc
self.master.title(self.file + " - PyCode - Code Editor")
with open(self.filePath, "r") as file:
self.new_doc()
self.editor.insert("1.0", file.read())
self.status_bar["text"] = "PyCode - Code Editor"
except TclError:
self.master.title("PyCode - Code Editor")
except FileNotFoundError:
self.master.title("PyCode - Code Editor")
def load_menu_bar(self):
self.menubar = Menu(self)
menu = Menu(self.menubar, tearoff=0)
self.menubar.add_cascade(label="File", menu=menu)
menu.add_command(label="Open", command=self.open_file)
menu.add_command(label="New", command=self.new_doc)
menu.add_command(label="Save", command=self.save_file)
menu.add_command(label="Save As", command=self.saveas_file)
menu.add_separator()
menu.add_command(label="Quit", command=self.master.destroy)
menu = Menu(self.menubar, tearoff=0)
self.menubar.add_cascade(label="Edit", menu=menu)
menu.add_command(label="Font Size", command=self.edit_font_size)
menu.add_command(label="Font Family", command=self.edit_font_family)
self.menubar.add_cascade(label="About", command=self.about_dialog)
try:
self.master.config(menu=self.menubar)
except AttributeError:
# master is a toplevel window (Python 1.4/Tkinter 1.63)
self.master.tk.call(master, "config", "-menu", self.menubar)
def edit_font_size(self):
try:
new_size = simpledialog.askinteger("Font Size", "New Font Size")
self.editor_font_size = new_size
self.editor.configure(
font=(self.editor_font_family, self.editor_font_size))
except TclError:
pass
def edit_font_family(self):
try:
new_family = simpledialog.askstring(
"Font Family", "New Font Family")
self.editor_font_family = new_family
self.editor.configure(
font=(self.editor_font_family, self.editor_font_size))
except TclError:
pass
def save_file(self):
try:
self.status_bar["text"] = "Saving File..."
text_to_save = self.editor.get("1.0", "end-1c")
loc = self.filePath
try:
with open(loc, "w+") as file:
file.write(text_to_save)
file.close()
except FileNotFoundError:
pass
self.status_bar["text"] = "PyCode - Code Editor"
self.master.title(os.path.basename(
loc) + " - PyCode - Code Editor ")
self.file = os.path.basename(loc)
self.filePath = loc
except TclError:
self.master.title("PyCode - Code Editor")
except FileNotFoundError:
self.master.title("PyCode - Code Editor")
def saveas_file(self):
try:
self.status_bar["text"] = "Saving File..."
text_to_save = self.editor.get("1.0", "end-1c")
loc = filedialog.asksaveasfilename()
try:
with open(loc, "w+") as file:
file.write(text_to_save)
file.close()
except FileNotFoundError:
pass
self.status_bar["text"] = "PyCode - Code Editor"
self.master.title(os.path.basename(
loc) + " - PyCode - Code Editor ")
self.file = os.path.basename(loc)
self.filePath = loc
except TclError:
self.master.title("PyCode - Code Editor")
except FileNotFoundError:
self.master.title("PyCode - Code Editor")
def load_widgets(self):
# Main Editor
self.editor_font_size = 10
self.editor_font_family = "Open Sans"
self.editor = ScrolledText(self, bd=0, relief=FLAT)
self.editor.config(wrap=WORD)
self.editor.configure(
font=(self.editor_font_family, self.editor_font_size))
self.editor.pack(expand=True, side=TOP, fill=BOTH)
# self.editor.bind("<KeyPress>", self.syntaxHighlight)
# Status Bar
self.status_bar = Label(self, text="PyCode - Code Editor",
bd=1, relief=SUNKEN, anchor=W)
self.status_bar.pack(side=BOTTOM, fill=X)
root = Tk()
app = AppUI(root)
app.pack()
root.mainloop()