[파이썬] argparse의 GUI 통합

파이썬 언어에서 명령행 인자를 처리하는 argparse 모듈은 많은 프로젝트에서 널리 사용되고 있습니다. 그러나 대부분의 경우, 사용자는 터미널에 명령어를 입력하여 인자를 전달해야 합니다. 이번 블로그 포스트에서는 argparse를 사용하여 간단한 GUI를 만들고, 사용자가 그래픽 인터페이스를 통해 명령행 인자를 전달할 수 있는 방법을 알아보겠습니다.

Tkinter를 이용한 GUI 개발

우선, 파이썬에서 GUI를 개발하기 위해 표준 라이브러리인 Tkinter를 사용할 것입니다. Tkinter는 간단하고 사용하기 쉬운 인터페이스를 제공하여 다양한 운영체제에서 동작합니다.

다음은 Tkinter를 사용하여 기본적인 윈도우 창을 생성하는 예제 코드입니다:

import tkinter as tk

root = tk.Tk()
root.mainloop()

위의 코드를 실행하면 빈 윈도우 창이 열리고, 사용자가 창을 닫을 때까지 유지됩니다.

argparse와 Tkinter 통합하기

이제 argparse와 Tkinter를 함께 사용하여 명령행 인자를 전달하는 GUI를 만들기 위해 몇 가지 추가 작업이 필요합니다. 먼저 argparse.ArgumentParser() 객체를 생성하여 인자들을 정의합니다.

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--input', help='Input file path')
parser.add_argument('--output', help='Output file path')
args = parser.parse_args()

위의 코드에서는 --input--output이라는 두 개의 인자를 정의하였습니다. 이제 사용자가 이러한 인자를 GUI를 통해 전달할 수 있도록 Tkinter를 사용하여 인터페이스를 구성해야 합니다.

import argparse
import tkinter as tk

def get_arguments():
    parser = argparse.ArgumentParser()
    parser.add_argument('--input', help='Input file path')
    parser.add_argument('--output', help='Output file path')
    args = parser.parse_args()
    return args

def create_gui():
    root = tk.Tk()
    
    input_label = tk.Label(root, text="Input file path:")
    input_label.pack()
    input_entry = tk.Entry(root)
    input_entry.pack()
    
    output_label = tk.Label(root, text="Output file path:")
    output_label.pack()
    output_entry = tk.Entry(root)
    output_entry.pack()
    
    submit_button = tk.Button(root, text="Submit", command=root.quit)
    submit_button.pack()
    
    root.mainloop()
    
    args = get_arguments()
    return args

if __name__ == "__main__":
    args = create_gui()
    print(f"Input file: {args.input}")
    print(f"Output file: {args.output}")

위의 코드는 create_gui() 함수에서 Tkinter를 사용하여 인터페이스를 생성하고, 사용자가 입력한 값들을 args 객체에 저장하여 반환합니다. 반환된 args 객체에서는 사용자가 입력한 값을 확인하거나 필요한 작업을 수행할 수 있습니다.

실행 결과

위의 코드를 실행하면 다음과 같은 화면이 나타납니다:

GUI Screenshot

사용자는 “Input file path”와 “Output file path” 필드에 데이터를 입력한 다음 “Submit” 버튼을 클릭하여 값을 전달할 수 있습니다. 이 값을 사용할 경우, args.inputargs.output을 통해 해당 값을 참조할 수 있습니다.

결론

argparse 모듈을 사용하여 명령행 인자를 처리하는 프로그램에 Tkinter를 통합함으로써 사용자가 그래픽 인터페이스를 통해 인자를 전달할 수 있는 간단한 GUI를 개발할 수 있습니다. 이를 통해 사용자는 터미널을 사용하지 않고도 편리하게 프로그램을 실행할 수 있습니다.