ボタンを使ったサンプルコード 【Python & tkinter】

tkinter

Python でボタンとテキストボックスを使ったサンプルコードです。必要最小限の知識で動くサンプルにしています。また、Python 標準の tkinter を使っていますので、Python が動く環境であれば、新たなインストールなど不要で、そのまま動くと思います。

環境: Windows 10、Python 3 (Anaconda をインストールしています)

使い方:ボタンとテキストボックスを使ったサンプルコード

① テキストエディタで textbox_button.py 等のファイルを作り、下記のサンプルコードをコピー&ペーストして保存して下さい。
② コマンドプロンプトから python (パス)test.py 等とすると、実行できると思います。
③ 動いたら、テキストボックスやボタンの位置、数、関数を修正して、自由に活用してください。

サンプルコードの説明:

・ 最初に tkinter をインポートします。”… as tk1″ と記載して、以後、tk1.…の形で呼び出して使います。
・ つぎに、def としたところで、関数を3つ定義しています。最初はブラックボックスとして飛ばして理解してください。
・ frame1 = tk1.Tk() とした行以降で、アプリの GUI 画面のタイトルや大きさを設定しています。
・ label1 = tk1.Label( … ) としたところで、ラベルを定義して、GUI 画面上に配置しています。
・ textbox1 = tk1.Entry( … ) としたところで、テキストボックス(正確にはエントリ)を定義して、GUI 画面上に配置しています。
・ button1 = tk1.Button( … ), button2 … , button3 … としたところで、ボタンを3つ定義しています。
3つの各ボタンをクリックしたときに実行する関数を “command=…” としたところで設定しています。この3つの関数を、冒頭の def としたところで定義しています。
・ 冒頭で def で定義した3つの関数では、初期化する、1を足す、1を引くという計算をしています。
テキストボックスを初期化する方法、テキストボックスから文字列を読み取る方法、読み取った文字列・数字に1を足す、引く方法については、スクリプトを見てください。最初は、こういうお約束かという理解でよいと思います。
・ その後、起動時の動作としては、最初に初期化の関数 init1() を実行しておきたい(念のため)ので、init1() を実行させています。
・ その後、作成した GUI 画面 frame1 に対してメインループ mainloop() を回し(=繰り返し実行し)、GUI を表示させています。
・ Python のスクリプトを実行すると、最初に初期化の関数 init1() を実行し、つぎにメインループ mainloop() を実行して GUI を表示し続ける動きになります。
GUI を表示しているときにボタンをクリックすると、そのタイミングで、定義された各関数が実行され、テキストボックスの書き換えなどが実行される、という動きになります。

・ 動いたら、自由にカスタマイズしてみてください。
動かしてみると、各関数の呼び出し方、テキストボックスから値を取得する方法、テキストボックスに結果を書き込む方法など、わかると思います。

まとめ

テキストボックスとボタンについて最小限の知識で動かす方法をまとめました。
サンプルコードをコピー&ペーストしていけば、ボタンやテキストボックスを配置したアプリが数分で作成できると思います。
これで Python で GUI のプログラミングも可能となります。

もし、サンプルコードの理解がまだちょっと難しいかなと思った方は、下記の “Python tkinter サンプル” のあたりを参考にしてみてください。画面を設定するところからサンプルコードをまとめています。
うまく動いて、動かし方がわかった方は、下記リンクの他のサンプルも動かしてみてください。よく使う機能をできるだけ簡潔にまとめています。最短&最速で要領がつかめると思います。

関連リンク
Python tkinter サンプル 【最短&最速の3ステップ】
【Python】 クリップボード内の画像・テキストを自動保存する GUI アプリ サンプルコード
【Python】 tkinter 表の作成 サンプルコード
【tkinter】 チェックボックスの使い方 サンプルコード 【Python】

サンプルコード

#!/usr/bin/env python
# -*- coding: utf8 -*-
import tkinter as tk1 

def init1(): 
    textbox1.delete(0, tk1.END) 
    textbox1.insert(0, 0) 

def button_click1(): 
    num1 = int( textbox1.get() ) + 1 
    textbox1.delete(0, tk1.END) 
    textbox1.insert(0, num1) 

def button_click2(): 
    num1 = int( textbox1.get() ) - 1 
    textbox1.delete(0, tk1.END) 
    textbox1.insert(0, num1) 

frame1 = tk1.Tk()
frame1.title(u"first sample v0.1")
frame1.geometry("300x100")

label1 = tk1.Label(text='result')
label1.place(x=10, y=10) 

textbox1 = tk1.Entry(master=frame1) 
textbox1.place(x=10, y=30, width=100) 

button1 = tk1.Button(frame1, text='clear', command=init1, bg='red')
button1.place(x=10, y=60, width=85)

button2 = tk1.Button(frame1, text='+1', command=button_click1)
button2.place(x=100, y=60, width=85)

button3 = tk1.Button(frame1, text='-1', command=button_click2)
button3.place(x=190, y=60, width=85)

init1()

frame1.mainloop()
タイトルとURLをコピーしました