Python의 Tkinter를 사용하여 간단한 GUI 프로그램을 만들어 보았습니다.

Tkinter는 Python 스크립트를 GUI 형식으로 실행할 수 있는 라이브러리입니다.
이번에는 이것을 사용하여 간단한 GUI 프로그램을 만들어 보겠습니다.

저자의 환경은 Python3.7을 사용합니다.

사용법



우선은 기본적인 문법을 확인해 갑니다.

우선은 import.
별칭으로 tk로 둡니다.
import tkinter as tk 

루트 창을 만들고, 거기에 버튼이나 텍스트 박스 등의 부품을 기재해 갑니다.
mainloop() 메서드를 호출하여 이벤트 루프를 시작합니다.
이 이벤트 루프가 없으면 창을 잘 표시 할 수 없으므로주의하십시오.
root = tk.Tk()

root.mainloop()

제목



제목의 문자를 변경할 수 있습니다.
root.title("Hello World")

창 크기



가로 x 세로로 크기를 지정합니다.
root.geometry("横x縦")

일단 여기까지 실제로 표시시켜 보겠습니다.

sample.py
import tkinter as tk 

root = tk.Tk()
root.title("Hello World")
root.geometry("400x200")

root.mainloop()

실행 이미지

타이틀과 윈도우 폭이 지정한 것이 되어 있을까 생각합니다.

라벨



레이블의 텍스트에 표시할 문자를 설정합니다.
pack() 메소드로 배치합니다.
label = tk.Label(root, text="こんにちは")
label.pack()

실행 이미지

레이블에 지정된 문자가 표시되었습니다.

텍스트 상자



줄 바꿈이 불가능한 텍스트 상자를 만듭니다.
Entry()로 호출하여 사용합니다.
configure() 메소드를 사용하여 상태를 변경하고 너비를 조정할 수 있습니다.
txtBox = tk.Entry()
txtBox.configure(state='normal', width=50)
txtBox.pack()

실행 이미지

텍스트 상자가 생성되었습니다.
state='normal'이므로 입력을 할 수 있지만,
state='readonly'로 하면 입력을 금지할 수 있습니다.

버튼



Button() 메서드를 호출하여 사용합니다.
좌표를 지정해 배치하고 싶을 때는 place() 메소드로 배치합니다.

버튼을 눌렀을 때의 처리에 관해서는,
.bind("클릭 처리", 함수)라고 합니다만,
이번에는 클릭한 경우를 시도해 보겠습니다.

아래의 샘플은 버튼을 누르면,
텍스트 상자에 문자를 추가합니다.
def outputWords(event):
    txtBox.insert(tk.END, 'Hello!!!')

txtBox = tk.Entry()
txtBox.configure(state='normal', width=50)
txtBox.pack()

button = tk.Button(text='ボタン', width=30)
button.place(x=90, y=120)
button.bind('<Button-1>', outputWords)

실행 이미지

버튼을 누르면 Hello!!!가 표시되었습니다.

응용편



그럼
이것들을 응용하여 간단한 GUI 프로그램을 만들어 보겠습니다.
작성한 것은 버튼을 누르면 명언을 준다는 것입니다.

txtBox.get()로 값을 취득해 판정에 이용하거나와,
설명할 수 없었던 곳도 있지만,
실제로 움직임을 보면서 느낌을 잡아 주시면 다행입니다.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import tkinter as tk
import random

root = tk.Tk()
root.title("お言葉先生")
root.geometry("400x200")

words = ('ハングリーであれ。愚か者であれ。', 
'夢は大きく、失敗は大胆に。', 
'困難の中に、機会がある。',
'知識とは、天に飛翔するための翼である。',
'人生は公平ではない。そのことに慣れよう。',
'重要なことに集中する唯一の方法は「ノー」と言うことだ。',
'活動的な馬鹿より恐ろしいものはない。',
'最も大きな危険は勝利の瞬間にある。',
'輝けるもの必ずしも金ならず。'
)

def outputWords(event): 

    value = txtBox.get()
    txtBox.configure(state='normal')

    # 既に文字があれば削除する
    if value: 
        txtBox.delete(0, tk.END)

    txtBox.insert(tk.END, random.choice(words))
    txtBox.configure(state='readonly')

# ラベルを追加
label = tk.Label(root, text="今のそなたに必要な言葉を授けよう")
label.pack()

# テキストボックスを追加
txtBox = tk.Entry()
txtBox.configure(state='readonly', width=50)
txtBox.place(x=55, y=80)

# ボタンの追加
button = tk.Button(text='さあ、ボタンを押すがよい', width=30)
button.place(x=90, y=120)
button.bind('<Button-1>', outputWords)

root.mainloop()

실행 이미지

버튼을 누르면 선생님이 명언을 주었습니다.

참고

좋은 웹페이지 즐겨찾기