»õ ÆÄÀÏ¿¡¼ ó¸®ÇÏ¿©¾ß ÇÒ
°ÍÀº 2°¡Áö ÀÔ´Ï´Ù. ÅØ½ºÆ® ¹Ú½ºÀÇ
µ¥ÀÌÅ͸¦ ÀüºÎ »èÁ¦Çϰí, À©µµ¿ì Á¦¸ñÀ» óÀ½ Á¦¸ñÀÎ
"Á¦¸ñ
¾øÀ½ Windows ¸Þ¸ðÀå"À¸·Î º¯°æÇÏ¸é µË´Ï´Ù.
¡× ÅØ½ºÆ® ¹Ú½ºÀÇ µ¥ÀÌÅÍ
ÀüºÎ »èÁ¦
¡× Á¦¸ñ Ç¥½ÃÁÙ¿¡ "Á¦¸ñ ¾øÀ½" + "Windows ¸Þ¸ðÀå" Ç¥½Ã
def doFileNew():
mainWin.title("Á¦¸ñ ¾øÀ½ + Windows ¸Þ¸ðÀå")
contentText.delete(1.0, 'end')
menuFile.add_command(label="»õ·Î ¸¸µé±â(N)",
accelerator="Ctrl+N")
¡¼Çü½Ä¡½
import
tkinter.filedialog
ÆÄÀÏ¸íº¯¼ö=tkinter.filedialog.askopenfilename(initialdir="/",
title="ÆÄÀÏ ¿±â",
filetypes=(("Text Files","*.txt"),
("All Files", "**")))
¡¼¿¹Á¦¡½
myFileName = tk.filedialog.askopenfilename(initialdir="/",
title="ÆÄÀÏ ¿±â",filetypes=(("Text
Files","*.txt"),
("All
Files", "**")))
¡¼Çü½Ä¡½
ÆÄÀϺ¯¼ö=open(ÆÄÀÏ¿±â»óÀÚ_ÆÄÀϺ¯¼ö, 'r',encoding='utf-8')
º¯¼ö=ÆÄÀϺ¯¼ö.read()
ÅØ½ºÆ®¹Ú½º°³Ã¼º´.insert(1.0, º¯¼ö)
ÆÄÀϺ¯¼ö.close()
¡¼¿¹Á¦¡½
inFile=open(myFileName,'r',encoding='utf-8')
fileData=inFile.read()
contentText.insert(1.0, fileData)
inFile.close()
fileData=inFile.read()
File "C:\secondDrive\Anaconda3\lib\codecs.py", line 322, in
decode
(result, consumed) =
self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't
decode byte 0xbe in position 0: invalid start byte
ÆÄÀÏ ¿±â »óÀÚ
ÆÄÀÏ¿¡¼ µ¥ÀÌÅ͸¦ ÀÐ¾î¼ ÅØ½ºÆ®
¹Ú½º¿¡ Ç¥½Ã
â Á¦¸ñ¿¡ "ÆÄÀÏÀ̸§ - Windows
¸Þ¸ðÀå" Ç¥½Ã
def doFileOpen():
myFileName
= tk.filedialog.askopenfilename(initialdir="/",
title="ÆÄÀÏ ¿±â", filetypes=(("Text
Files","*.txt"), ("All Files", "**")))
if
myFileName:
inFile=open(myFileName,'r',encoding='utf-8')
fileData=inFile.read()
contentText.insert(1.0, fileData)
inFile.close()
mainWin.title(myFileName + " - Windows ¸Þ¸ðÀå")
mainWin.title(myFileName + " -
Windows ¸Þ¸ðÀå")¸¦ 󸮸¦ Çϸé
myFileNameÀº "°æ·Î¸í+ÆÄÀϸí"À̹ǷΠÆÄÀÏ¸í¸¸ Ç¥½ÃÇϱâ
À§Çؼ os.path.basename¸¦ »ç¿ëÇÏ¿© ÆÄÀÏ¸í¸¸
°¡Á®¿É´Ï´Ù.
fileName=os.path.basename(myFileName)
#File Name: Notepad_04.py
import tkinter as tk
from tkinter import Menu
import tkinter.filedialog
import os
def doFileNew():
mainWin.title("Á¦¸ñ ¾øÀ½ - Windows ¸Þ¸ðÀå")
contentText.delete(1.0, 'end')
def doFileOpen():
myFileName
= tk.filedialog.askopenfilename(initialdir="/",
title="ÆÄÀÏ ¿±â", filetypes=(("Text
Files","*.txt"), ("All Files", "**")))
if
myFileName:
inFile=open(myFileName,'r',encoding='utf-8')
fileData=inFile.read()
contentText.insert(1.0, fileData)
inFile.close()
fileName=os.path.basename(myFileName)
mainWin.title(fileName + " - Windows ¸Þ¸ðÀå")
# Create instance of Window
mainWin=tk.Tk()
# Set title and size
mainWin.title("Á¦¸ñ ¾øÀ½ - Windows ¸Þ¸ðÀå")
mainWin.geometry("640x480")
#Creating a Menu Bar
menuBar=tk.Menu(mainWin)
mainWin.config(menu=menuBar)
menuFile=tk.Menu(menuBar, tearoff=0)
menuBar.add_cascade(label="ÆÄÀÏ(F)",
menu=menuFile)
menuFile.add_command(label="»õ·Î ¸¸µé±â(N)",
accelerator="Ctrl+N",
command=doFileNew)
menuFile.add_command(label="ț ̢(W)",
accelerator="Ctrl+Shift+N")
menuFile.add_command(label="¿±â(O)...",
accelerator="Ctrl+O", command=doFileOpen)
menuFile.add_command(label="ÀúÀå(S)",
accelerator="Ctrl+S")
menuFile.add_command(label="´Ù¸¥ À̸§À¸·Î ÀúÀå(A)...",
accelerator="Ctrl+Shift+S")
menuFile.add_separator()
menuFile.add_command(label="ÆäÀÌÁö ¼³Á¤(U)...")
menuFile.add_command(label="Àμâ(P)...",
accelerator="Ctrl+P")
menuFile.add_separator()
menuFile.add_command(label="³¡³»±â(X)",
command=mainWin.destroy)
menuEdit=tk.Menu(menuBar,tearoff=0)
menuBar.add_cascade(label="ÆíÁý(E)",
menu=menuEdit)
menuEdit.add_command(label="½ÇÇà Ãë¼Ò(U)",
accelerator="Ctrl+Z")
menuEdit.add_command(label="Àß¶ó³»±â(T)",
accelerator="Ctrl+X")
menuEdit.add_command(label="º¹»ç(C)",
accelerator="Ctrl+C")
menuEdit.add_command(label="ºÙ¿©³Ö±â(P)",
accelerator="Ctrl+C")
menuEdit.add_command(label="»èÁ¦(L)",
accelerator="Del", compound="left", underline=0)
menuEdit.add_separator()
menuEdit.add_command(label="BingÀ¸·Î °Ë»ö(S)",
accelerator="Ctrl+E")
menuEdit.add_command(label="ã±â(F)",
accelerator="Ctrl+F", compound="left")
menuEdit.add_command(label="´ÙÀ½ ã±â(N)",
accelerator="F3", compound="left")
menuEdit.add_command(label="ÀÌÀü ã±â(V)",
accelerator="Shift+F3")
menuEdit.add_command(label="¹Ù²Ù±â(R)",
accelerator="Ctrl+H")
menuEdit.add_command(label="À̵¿(G)...",
accelerator="Ctrl+G")
menuEdit.add_separator()
menuEdit.add_command(label="¸ðµÎ ¼±ÅÃ(A)...",
accelerator="Ctrl+A")
menuEdit.add_command(label="½Ã°£/³¯Â¥(D)...", accelerator="F5")
menuFormat=tk.Menu(menuBar,tearoff=0)
menuBar.add_cascade(label="¼½Ä(O)",
menu=menuFormat)
#menuFormat.add_command(label="ÀÚµ¿ ÁÙ ¹Ù²Þ(W)")
show_LineFeed=tk.BooleanVar()
menuFormat.add_checkbutton(label="ÀÚµ¿ ÁÙ ¹Ù²Þ(W)", variable=show_LineFeed)
menuFormat.add_command(label="±Û²Ã(F)...")
menuView=tk.Menu(menuBar,tearoff=0)
menuBar.add_cascade(label="º¸±â(V)",
menu=menuView)
menuEnlarge=tk.Menu(menuBar,tearoff=0)
menuView.add_cascade(label="È®´ëÇϱâ/Ãà¼ÒÇϱâ", menu=menuEnlarge)
menuEnlarge.add_command(label="È®´ë(I)",
accelerator="Ctrl+´õÇϱâ")
menuEnlarge.add_command(label="Ãà¼Ò(O)",
accelerator="Ctrl+»©±â")
menuEnlarge.add_command(label="È®´ëÇϱâ/Ãà¼ÒÇϱâ
±âº»°ª º¹¿ø", accelerator="Ctrl+0")
#menuView.add_command(label="»óÅÂÇ¥½ÃÁÙ(S)")
show_StatusBar=tk.BooleanVar()
menuView.add_checkbutton(label="»óÅÂÇ¥½ÃÁÙ(S)",variable=show_StatusBar)
menuHelp=tk.Menu(menuBar,tearoff=0)
menuBar.add_cascade(label="µµ¿ò¸»(H)",
menu=menuHelp)
menuHelp.add_command(label="µµ¿ò¸» º¸±â(H)")
menuHelp.add_command(label="Çǵå¹é º¸³»±â(F)")
menuHelp.add_separator()
menuHelp.add_command(label="¸Þ¸ðÀå Á¤º¸(A)")
#Text Box with scrollbar
contentText=tk.Text(mainWin, wrap='word')
contentText.pack(expand='yes', fill='both')
scrollBar=tk.Scrollbar(contentText)
contentText.configure(yscrollcommand=scrollBar.set)
scrollBar.config(command=contentText.yview)
scrollBar.pack(side='right', fill='y')
# Start Window
mainWin.mainloop()
¡¼Çü½Ä¡½
import
tkinter.filedialog
ÆÄÀÏ¸íº¯¼ö=tkinter.filedialog.asksaveasfilename(initialdir="/",
title="»õÀ̸§À¸·Î ÀúÀå",
filetypes=(("Text Files","*.txt"),
("All
Files", "**")))
¡¼¿¹Á¦¡½
myFileName =
tk.filedialog.asksaveasfilename(initialdir="/",
title="»õÀ̸§À¸·Î ÀúÀå",
filetypes=(("Text Files","*.txt"),
("All
Files", "*.*")))
¡¼Çü½Ä¡½
ÆÄÀϺ¯¼ö=open(ÆÄÀÏ¿±â»óÀÚ_ÆÄÀϺ¯¼ö, 'w',encoding='utf-8')
º¯¼ö=ÅØ½ºÆ®¹Ú½º°³Ã¼À̸§.get(1.0,
'end')
ÆÄÀϺ¯¼ö.write(º¯¼ö)
ÆÄÀϺ¯¼ö.close()
¡¼¿¹Á¦¡½
outFile=open(myFileName,'w',encoding='utf-8')
fileData=contentText.get(1.0,'end')
outFile.write(fileData)
outFile.close()
def doFileAsSave():
myFileName
= tk.filedialog.asksaveasfilename(initialdir="/",
title="´Ù¸¥ À̸§À¸·Î ÀúÀå",
filetypes=(("Text Files","*.txt"),
("All
Files", "*.*")))
if
myFileName:
outFile=open(myFileName,'w',encoding='utf-8')
fileData=contentText.get(1.0,'end')
outFile.write(fileData)
outFile.close()
fileName=os.path.basename(myFileName)
mainWin.title(fileName + " - Windows ¸Þ¸ðÀå")
menuFile.add_command(label="´Ù¸¥ À̸§À¸·Î ÀúÀå(A)...",
accelerator="Ctrl+Shift+S", command=doFileAsSave)
ÀúÀåÇϱâ´Â ´Ù¸¥ À̸§À¸·Î ÀúÀåÇϱâ¿Í´Â
´Ù¸£°Ô ±âÁ¸¿¡ ÀúÀåÀ»
ÇßÀ¸¸é ÆÄÀÏ ÀúÀå»óÀÚ¸¦
¿ ÇÊ¿ä ¾øÀÌ
¹Ù·Î ÆÄÀÏ¿¡ ÀúÀåÇϰí, ÀúÀåÇÑ ÀûÀÌ ¾øÀ¸¸é ´Ù¸¥
À̸§À¸·Î ÀúÀåÇϱ⸦ ÇÕ´Ï´Ù.
def doFileSave():
if myFileName==None:
myFileName = tk.filedialog.asksaveasfilename(initialdir="/",
title="ÀúÀå", filetypes=(("Text
Files","*.txt"), ("All Files", "*.*")))
outFile=open(myFileName,'w',encoding='utf-8')
fileData=contentText.get(1.0,'end')
outFile.write(fileData)
outFile.close()
else :
outFile=open(myFileName,'w',encoding='utf-8')
fileData=contentText.get(1.0,'end')
outFile.write(fileData)
outFile.close()
fileName=os.path.basename(myFileName)
mainWin.title(fileName + " - Windows ¸Þ¸ðÀå")
menuFile.add_command(label="ÀúÀå(S)",
accelerator="Ctrl+S", command=doFileSave)
¡¼¼Ò½º
ÇÁ·Î±×·¥¡½
#File Name: Notepad_05.py
import tkinter as tk
from tkinter import Menu
import tkinter.filedialog
import os
global myFileName
myFileName=None
def doFileNew():
mainWin.title("Á¦¸ñ ¾øÀ½ - Windows ¸Þ¸ðÀå")
contentText.delete(1.0, 'end')
def doFileOpen():
global
myFileName
myFileName
= tk.filedialog.askopenfilename(initialdir="/",
title="ÆÄÀÏ ¿±â", filetypes=(("Text
Files","*.txt"), ("All Files", "**")))
if
myFileName:
inFile=open(myFileName,'r',encoding='utf-8')
fileData=inFile.read()
contentText.insert(1.0, fileData)
inFile.close()
fileName=os.path.basename(myFileName)
mainWin.title(fileName + " - Windows ¸Þ¸ðÀå")
def doFileSave():
global
myFileName
if myFileName==None:
myFileName = tk.filedialog.asksaveasfilename(initialdir="/",
title="ÀúÀå", filetypes=(("Text
Files","*.txt"), ("All Files", "*.*")))
outFile=open(myFileName,'w',encoding='utf-8')
fileData=contentText.get(1.0,'end')
outFile.write(fileData)
outFile.close()
else :
outFile=open(myFileName,'w',encoding='utf-8')
fileData=contentText.get(1.0,'end')
outFile.write(fileData)
outFile.close()
fileName=os.path.basename(myFileName)
mainWin.title(fileName + " - Windows ¸Þ¸ðÀå")
def doFileAsSave():
myFileName
= tk.filedialog.asksaveasfilename(initialdir="/",
title="´Ù¸¥ À̸§À¸·Î ÀúÀå", filetypes=(("Text
Files","*.txt"), ("All Files", "*.*")))
if
myFileName:
outFile=open(myFileName,'w',encoding='utf-8')
fileData=contentText.get(1.0,'end')
outFile.write(fileData)
outFile.close()
fileName=os.path.basename(myFileName)
mainWin.title(fileName + " - Windows ¸Þ¸ðÀå")
# Create instance of Window
mainWin=tk.Tk()
# Set title and size
mainWin.title("Á¦¸ñ ¾øÀ½ - Windows ¸Þ¸ðÀå")
mainWin.geometry("640x480")
#Creating a Menu Bar
menuBar=tk.Menu(mainWin)
mainWin.config(menu=menuBar)
menuFile=tk.Menu(menuBar, tearoff=0)
menuBar.add_cascade(label="ÆÄÀÏ(F)",
menu=menuFile)
menuFile.add_command(label="»õ·Î ¸¸µé±â(N)",
accelerator="Ctrl+N", command=doFileNew)
menuFile.add_command(label="ț ̢(W)",
accelerator="Ctrl+Shift+N")
menuFile.add_command(label="¿±â(O)...",
accelerator="Ctrl+O", command=doFileOpen)
menuFile.add_command(label="ÀúÀå(S)",
accelerator="Ctrl+S", command=doFileSave)
menuFile.add_command(label="´Ù¸¥ À̸§À¸·Î ÀúÀå(A)...",
accelerator="Ctrl+Shift+S", command=doFileAsSave)
menuFile.add_separator()
menuFile.add_command(label="ÆäÀÌÁö ¼³Á¤(U)...")
menuFile.add_command(label="Àμâ(P)...",
accelerator="Ctrl+P")
menuFile.add_separator()
menuFile.add_command(label="³¡³»±â(X)",
command=mainWin.destroy)
menuEdit=tk.Menu(menuBar,tearoff=0)
menuBar.add_cascade(label="ÆíÁý(E)",
menu=menuEdit)
menuEdit.add_command(label="½ÇÇà Ãë¼Ò(U)",
accelerator="Ctrl+Z")
menuEdit.add_command(label="Àß¶ó³»±â(T)",
accelerator="Ctrl+X")
menuEdit.add_command(label="º¹»ç(C)",
accelerator="Ctrl+C")
menuEdit.add_command(label="ºÙ¿©³Ö±â(P)",
accelerator="Ctrl+C")
menuEdit.add_command(label="»èÁ¦(L)",
accelerator="Del", compound="left", underline=0)
menuEdit.add_separator()
menuEdit.add_command(label="BingÀ¸·Î °Ë»ö(S)",
accelerator="Ctrl+E")
menuEdit.add_command(label="ã±â(F)",
accelerator="Ctrl+F", compound="left")
menuEdit.add_command(label="´ÙÀ½ ã±â(N)",
accelerator="F3", compound="left")
menuEdit.add_command(label="ÀÌÀü ã±â(V)",
accelerator="Shift+F3")
menuEdit.add_command(label="¹Ù²Ù±â(R)",
accelerator="Ctrl+H")
menuEdit.add_command(label="À̵¿(G)...",
accelerator="Ctrl+G")
menuEdit.add_separator()
menuEdit.add_command(label="¸ðµÎ ¼±ÅÃ(A)...",
accelerator="Ctrl+A")
menuEdit.add_command(label="½Ã°£/³¯Â¥(D)...", accelerator="F5")
menuFormat=tk.Menu(menuBar,tearoff=0)
menuBar.add_cascade(label="¼½Ä(O)",
menu=menuFormat)
#menuFormat.add_command(label="ÀÚµ¿ ÁÙ ¹Ù²Þ(W)")
show_LineFeed=tk.BooleanVar()
menuFormat.add_checkbutton(label="ÀÚµ¿ ÁÙ ¹Ù²Þ(W)", variable=show_LineFeed)
menuFormat.add_command(label="±Û²Ã(F)...")
menuView=tk.Menu(menuBar,tearoff=0)
menuBar.add_cascade(label="º¸±â(V)",
menu=menuView)
menuEnlarge=tk.Menu(menuBar,tearoff=0)
menuView.add_cascade(label="È®´ëÇϱâ/Ãà¼ÒÇϱâ", menu=menuEnlarge)
menuEnlarge.add_command(label="È®´ë(I)",
accelerator="Ctrl+´õÇϱâ")
menuEnlarge.add_command(label="Ãà¼Ò(O)",
accelerator="Ctrl+»©±â")
menuEnlarge.add_command(label="È®´ëÇϱâ/Ãà¼ÒÇϱâ
±âº»°ª º¹¿ø", accelerator="Ctrl+0")
#menuView.add_command(label="»óÅÂÇ¥½ÃÁÙ(S)")
show_StatusBar=tk.BooleanVar()
menuView.add_checkbutton(label="»óÅÂÇ¥½ÃÁÙ(S)",variable=show_StatusBar)
menuHelp=tk.Menu(menuBar,tearoff=0)
menuBar.add_cascade(label="µµ¿ò¸»(H)",
menu=menuHelp)
menuHelp.add_command(label="µµ¿ò¸» º¸±â(H)")
menuHelp.add_command(label="Çǵå¹é º¸³»±â(F)")
menuHelp.add_separator()
menuHelp.add_command(label="¸Þ¸ðÀå Á¤º¸(A)")
#Text Box with scrollbar
contentText=tk.Text(mainWin, wrap='word')
contentText.pack(expand='yes', fill='both')
scrollBar=tk.Scrollbar(contentText)
contentText.configure(yscrollcommand=scrollBar.set)
scrollBar.config(command=contentText.yview)
scrollBar.pack(side='right', fill='y')
# Start Window
mainWin.mainloop()
±âÁ¸ÀÇ ÆÄÀÏ¿¡ µ¤¾î ¾º¿ì·Á¸é
´ÙÀ½°ú °°Àº âÀÌ
³ª¿À´Âµ¥, ÀÌ °ÍÀº ÇÁ·Î±×·¡¸Ó°¡
ÇÁ·Î±×·¡¹ÖÇÏ´Â °ÍÀÌ ¾Æ´Õ´Ï´Ù. À©µµ¿ì ¿î¿µÃ¼Á¦°¡ Á¦°øÇÏ´Â APIÀÔ´Ï´Ù.
