- Notifications
You must be signed in to change notification settings - Fork 49
Expand file tree
/
Copy pathNotepad.py
More file actions
Latest commit
executable file
·161 lines (114 loc) · 4.99 KB
/
Copy pathNotepad.py
File metadata and controls
executable file
·161 lines (114 loc) · 4.99 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
161
importtkinter
importos
fromtkinterimport*
fromtkinter.messageboximport*
fromtkinter.filedialogimport*
classNotepad:
#variables
__root=Tk()
#default window width and height
__thisWidth=300
__thisHeight=300
__thisTextArea=Text(__root)
__thisMenuBar=Menu(__root)
__thisFileMenu=Menu(__thisMenuBar,tearoff=0)
__thisEditMenu=Menu(__thisMenuBar,tearoff=0)
__thisHelpMenu=Menu(__thisMenuBar,tearoff=0)
__thisScrollBar=Scrollbar(__thisTextArea)
__file=None
def__init__(self,**kwargs):
#initialization
#set icon
try:
self.__root.wm_iconbitmap("Notepad.ico") #GOT TO FIX THIS ERROR (ICON)
except:
pass
#set window size (the default is 300x300)
try:
self.__thisWidth=kwargs['width']
exceptKeyError:
pass
try:
self.__thisHeight=kwargs['height']
exceptKeyError:
pass
#set the window text
self.__root.title("Untitled - Notepad")
#center the window
screenWidth=self.__root.winfo_screenwidth()
screenHeight=self.__root.winfo_screenheight()
left= (screenWidth/2) - (self.__thisWidth/2)
top= (screenHeight/2) - (self.__thisHeight/2)
self.__root.geometry('%dx%d+%d+%d'% (self.__thisWidth, self.__thisHeight, left, top))
#to make the textarea auto resizable
self.__root.grid_rowconfigure(0,weight=1)
self.__root.grid_columnconfigure(0,weight=1)
#add controls (widget)
self.__thisTextArea.grid(sticky=N+E+S+W)
self.__thisFileMenu.add_command(label="New",command=self.__newFile)
self.__thisFileMenu.add_command(label="Open",command=self.__openFile)
self.__thisFileMenu.add_command(label="Save",command=self.__saveFile)
self.__thisFileMenu.add_separator()
self.__thisFileMenu.add_command(label="Exit",command=self.__quitApplication)
self.__thisMenuBar.add_cascade(label="File",menu=self.__thisFileMenu)
self.__thisEditMenu.add_command(label="Cut",command=self.__cut)
self.__thisEditMenu.add_command(label="Copy",command=self.__copy)
self.__thisEditMenu.add_command(label="Paste",command=self.__paste)
self.__thisMenuBar.add_cascade(label="Edit",menu=self.__thisEditMenu)
self.__thisHelpMenu.add_command(label="About Notepad",command=self.__showAbout)
self.__thisMenuBar.add_cascade(label="Help",menu=self.__thisHelpMenu)
self.__root.config(menu=self.__thisMenuBar)
self.__thisScrollBar.pack(side=RIGHT,fill=Y)
self.__thisScrollBar.config(command=self.__thisTextArea.yview)
self.__thisTextArea.config(yscrollcommand=self.__thisScrollBar.set)
def__quitApplication(self):
self.__root.destroy()
#exit()
def__showAbout(self):
showinfo("Notepad","Created by: Ferdinand Silva (http://ferdinandsilva.com)")
def__openFile(self):
self.__file=askopenfilename(defaultextension=".txt",filetypes=[("All Files","*.*"),("Text Documents","*.txt")])
ifself.__file=="":
#no file to open
self.__file=None
else:
#try to open the file
#set the window title
self.__root.title(os.path.basename(self.__file) +" - Notepad")
self.__thisTextArea.delete(1.0,END)
file=open(self.__file,"r")
self.__thisTextArea.insert(1.0,file.read())
file.close()
def__newFile(self):
self.__root.title("Untitled - Notepad")
self.__file=None
self.__thisTextArea.delete(1.0,END)
def__saveFile(self):
ifself.__file==None:
#save as new file
self.__file=asksaveasfilename(initialfile='Untitled.txt',defaultextension=".txt",filetypes=[("All Files","*.*"),("Text Documents","*.txt")])
ifself.__file=="":
self.__file=None
else:
#try to save the file
file=open(self.__file,"w")
file.write(self.__thisTextArea.get(1.0,END))
file.close()
#change the window title
self.__root.title(os.path.basename(self.__file) +" - Notepad")
else:
file=open(self.__file,"w")
file.write(self.__thisTextArea.get(1.0,END))
file.close()
def__cut(self):
self.__thisTextArea.event_generate("<<Cut>>")
def__copy(self):
self.__thisTextArea.event_generate("<<Copy>>")
def__paste(self):
self.__thisTextArea.event_generate("<<Paste>>")
defrun(self):
#run main application
self.__root.mainloop()
#run main application
notepad=Notepad(width=600,height=400)
notepad.run()