III.  ÆÄÀÏ Ã³¸®

 

01. »õ ÆÄÀÏ Ã³¸®

 

»õ ÆÄÀÏ¿¡¼­ ó¸®ÇÏ¿©¾ß ÇÒ °ÍÀº 2°¡Áö ÀÔ´Ï´Ù. ÅØ½ºÆ® ¹Ú½ºÀÇ µ¥ÀÌÅ͸¦ ÀüºÎ »èÁ¦Çϰí, À©µµ¿ì Á¦¸ñÀ» óÀ½ Á¦¸ñÀÎ "Á¦¸ñ ¾øÀ½ Windows ¸Þ¸ðÀå"À¸·Î º¯°æÇÏ¸é µË´Ï´Ù.

 

¡× ÅØ½ºÆ® ¹Ú½ºÀÇ µ¥ÀÌÅÍ ÀüºÎ »èÁ¦

¡× Á¦¸ñ Ç¥½ÃÁÙ¿¡ "Á¦¸ñ ¾øÀ½" + "Windows ¸Þ¸ðÀå" Ç¥½Ã

 

 

 

def doFileNew():

    mainWin.title("Á¦¸ñ  ¾øÀ½ + Windows ¸Þ¸ðÀå")

contentText.delete(1.0, 'end')

 

menuFile.add_command(label="»õ·Î ¸¸µé±â(N)", accelerator="Ctrl+N")

 

 

02. ÆÄÀÏ ¿­±â »óÀÚ

¡¼01¡½ ÆÄÀÏ ¿­±â »óÀÚ ºÒ·¯¿À±â

 

¡¼Çü½Ä¡½

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", "**")))

 

 

 

 

¡¼02¡½ ÆÄÀÏ¿¡¼­ ÅØ½ºÆ® ¹Ú½º·Î µ¥ÀÌÅÍ ºÒ·¯¿À±â

 

¡¼Çü½Ä¡½

ÆÄÀϺ¯¼ö=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

 

 

¡¼03¡½ ÆÄÀÏ ¿­±â ó¸®

ÆÄÀÏ ¿­±â »óÀÚ

ÆÄÀÏ¿¡¼­ µ¥ÀÌÅ͸¦ Àо ÅØ½ºÆ® ¹Ú½º¿¡ Ç¥½Ã

â Á¦¸ñ¿¡ "ÆÄÀÏÀ̸§ - 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()

 

 

 

03. ÆÄÀÏ ÀúÀå »óÀÚ

¡¼01¡½ ÆÄÀÏ ÀúÀå»óÀÚ ºÒ·¯¿À±â

 

¡¼Çü½Ä¡½

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", "*.*")))

 

 

¡¼02¡½ ÆÄÀÏ·Î ÀúÀåÇϱâ

 

¡¼Çü½Ä¡½

ÆÄÀϺ¯¼ö=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()

 

 

 


 

¡¼03¡½ ´Ù¸¥ À̸§À¸·Î ÀúÀåÇϱâ

 

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)


 

 

¡¼04¡½ ÀúÀåÇϱâ

 

ÀúÀåÇϱâ´Â ´Ù¸¥ À̸§À¸·Î ÀúÀåÇϱâ¿Í´Â ´Ù¸£°Ô ±âÁ¸¿¡ ÀúÀåÀ» ÇßÀ¸¸é ÆÄÀÏ ÀúÀå»óÀÚ¸¦ ¿­ ÇÊ¿ä ¾øÀÌ ¹Ù·Î ÆÄÀÏ¿¡ ÀúÀåÇϰí, ÀúÀåÇÑ ÀûÀÌ ¾øÀ¸¸é ´Ù¸¥ À̸§À¸·Î ÀúÀåÇϱ⸦ ÇÕ´Ï´Ù.

 

 

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ÀÔ´Ï´Ù.