IV.  ÇÁ¸°Æ®

¡¼01¡½ ÇÁ¸°ÅÍ ÀýÂ÷

 

 

 

ÀÓÆ÷Æ® ½ÃÄÑ¾ß ÇÏ´Â ¶óÀ̺귯¸®

 

¡¼Çü½Ä¡½

import win32api

import win32print

import tempfile

 

PyWin32 ¼Ò°³

PyWin32´Â À©µµ¿ì API »ç¿ëÀ» À§ÇÑ ÆÄÀ̽ã È®Àå (Python extensions for Windows)À¸·Î¼­

 

PyWin32¸¦ ÀÌ¿ëÇØ¼­ Win32 API (application programming interface)ÀÇ ±â´ÉµéÀ» ÆÄÀ̽㿡¼­ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

 

 


 

¡¼02¡½ PyWin32 ¼³Ä¡

 

pip install pywin32

 

¸í·ÉÇÁ·ÒÇÁÆ®¿¡¼­ À§ÀÇ ¸í·É¾î¸¦ ÅëÇØ PyWin32¸¦ ¼³Ä¡ÇÕ´Ï´Ù.

 

C:\Users\mail2\AppData\Local\Programs\Python\Python38\Scripts>pip install pywin32

Collecting pywin32

  Downloading pywin32-306-cp38-cp38-win_amd64.whl (9.4 MB)

     |████████████████████████████████| 9.4 MB 6.4 MB/s

Installing collected packages: pywin32

Successfully installed pywin32-306

WARNING: You are using pip version 20.2.1; however, version 23.1 is available.

You should consider upgrading via the 'c:\users\mail2\appdata\local\programs\python\python38\python.exe -m pip install --upgrade pip' command.

python.exe -m pip install --upgrade pip

 

¼³Ä¡ÇÑ ÈÄ¿¡ ÆÄÀ̽ãÀ» Àç ½ÇÇàÇÏ¿©¾ß ÇÕ´Ï´Ù. ÇöÀç Äڵ尡 ¿­¾î ÀÖ´Â »óÅ¿¡¼­ Àç ½ÇÇàÇÏ¸é ¼³Ä¡ÇÑ api°¡ import°¡ µÇÁö ¾Ê½À´Ï´Ù.

 

 

¡¼03¡½ ±âº»ÇÁ¸°ÅÍ

¿î¿µÃ¼Á¦¿¡ ¼³Á¤µÇ¾î ÀÖ´Â ±âº»ÇÁ¸°Å͸¦ °¡Á®¿È

 

¡¼Çü½Ä¡½

ÇÁ¸°Åͺ¯¼ö¸í=win32print.GetDefaultPrinter()

 

¡¼¿¹Á¦¡½

defaultPrinter=win32print.GetDefaultPrinter()

 

 

 

¡¼04¡½ ÀÓ½ÃÆÄÀÏ »ý¼º

¡¼Çü½Ä¡½

ÆÄÀϺ¯¼ö = tempfile.mktemp(".txt")

 

¡¼¿¹Á¦¡½

filename = tempfile.mktemp(".txt")

 

¡¼05¡½ ÀÓ½ÃÆÄÀÏÀ» ¿­°í µ¥ÀÌÅÍ ÀúÀå

¡¼Çü½Ä¡½

open(ÆÄÀϺ¯¼ö¸í, "w").write(º¯¼ö)

 

¡¼¿¹Á¦¡½

open(filename, "w").write(fileData)

 

ÆÄÀÏÀ» ¿­ ¶§, ÇѱÛÄڵ带 ÁöÁ¤ÇÏÁö ¾Ê´õ¶ó°í ÇѱÛÀÌ Ãâ·ÂµË´Ï´Ù.

 

¡¼06¡½ ÇÁ¸°Æ®

¿î¿µÃ¼Á¦ ¸í·ÉÀ» »ç¿ëÇÏ¿© ÆÄÀÏÀ» ÇÁ¸°ÅÍ¿¡ ÇÁ¸°Æ®

 

¡¼Çü½Ä¡½

win32api.ShellExecute(0, "print", ÆÄÀϸí,

        '"%s"' % ÇÁ¸°ÅÍÀ̸§,".", 0)

 

¡¼¿¹Á¦¡½

win32api.ShellExecute(0, "print", filename,

        '"%s"' % defaultPrinter,".", 0)

 

 

 

¡¼Àüü ¿¹Á¦¡½

def doPrint():

    defaultPrinter=win32print.GetDefaultPrinter()

    fileData=contentText.get(1.0,'end')

    filename = tempfile.mktemp(".txt")

    open(filename, "w").write(fileData)

    win32api.ShellExecute(0, "print", filename,

        '"%s"' % defaultPrinter,".", 0)

 

 

 

 

 

#File Name: Notepad_06.py

import tkinter as tk

from tkinter import Menu

import tkinter.filedialog

import os

import win32api

import win32print

import tempfile

 

 

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 ¸Þ¸ðÀå")  

 

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 ¸Þ¸ðÀå")  

 

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 ¸Þ¸ðÀå")  

 

 

        

def doPrint():

    defaultPrinter=win32print.GetDefaultPrinter()

    fileData=contentText.get(1.0,'end')

    filename = tempfile.mktemp(".txt")

    open(filename, "w").write(fileData)

    win32api.ShellExecute(0, "print", filename,

        '"%s"' % defaultPrinter,".", 0)

 

   

 

# 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=doFileAsSave)

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", command=doPrint)        

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()