Tkinter – PythonでGUI操作 – GUI画面

Tkinter

Tkinterを使って、PythonでGUI操作を行います。

GUI画面を表示してみよう

import tkinter

root = tkinter.Tk()

root.mainloop()

たった、3行のプログラムで画面を表示する事ができます。

上からプログラムを見ていきます。

import tkinter

tkinterのモジュールをインポートします。tkinterはPythonに標準で入っているモジュールのため、別でインストール不要です。

root = tkinter.Tk()

root = tkinter.Tk() は、TkinterでGUIアプリを作るときの最初の一歩とも言える、とても大切なコードです。これがないとGUIが始められません。

Tkinterのメインウィンドウ(アプリの本体となるウィンドウ)を作って、root という名前で使えるようにする、という意味です。

でも、このroot = tkinter.Tk()だけでは、GUIの画面は現れません。

root.mainloop()

をプログラムに入れる事で初めて、画面が現れます。

root.mainloop()は何なのか?というと、「GUI画面を表示して、ユーザーの操作をずっと待ち続ける」という意味です。

rootというGUI画面で、mainloop()でTkinterのイベントループをスタートするという意味です。イベントループとは、ボタンを押した、マウスが動いた、テキストを入力したなどの、ユーザー操作を監視し反応する仕組みです。

なぜ必要なのか?Pythonは上から下へ順番にコードを実行するので、mainloop()が無いと、ウィンドウが表示されて終了するだけになってしまう。GUI画面が動いている間は常にユーザーの操作(イベント)を監視して、その操作(イベント)に合わせてプログラムを作成してGUIを動かすという事になります。

タイトルを入れて見よう

import tkinter

root = tkinter.Tk()

root.title("GUI")          #★

root.mainloop()

追加した箇所は#★の1か所です。

root.title("GUI")

root.title( )で括弧の中にタイトルを指定する事で、タイトルをGUI画面に付ける事ができます。

タイトルを取得しよう

import tkinter

root = tkinter.Tk()

root.title("GUI")

print(root.title())       #★

root.mainloop()

追加した箇所は#★の1か所です。

print(root.title())

root.title()でrootで作成した画面のタイトルを取得する事ができます。

実行すると、下記のようにGUIと出力されます。

GUI

画面サイズ

import tkinter

root = tkinter.Tk()

root.title("GUI")

print(root.title())

root.geometry("500x50")        #★

root.mainloop()

追加した箇所は#★の1か所です。

root.geometry("500x50")

root.geometry()の括弧の中に画面のサイズを指定します。最初に現れる画面のサイズをしているだけのため、画面サイズは自由に変更する事が可能です。

横 x 縦で指定します。

画面のリサイズの許可

import tkinter

root = tkinter.Tk()

root.title("GUI")

print(root.title())

root.geometry("500x50")

root.resizable(False, True)      #★

root.mainloop()

追加した箇所は#★の1か所です。

root.resizable(False, True)

root.resizable()の括弧の中で、GUI画面のリサイズが可能かを指定します。(横方向、縦方向)をTrue / Falseで指示をします。

今回は、(False,True)なので、横方向はリサイズ不可で、縦方向はリサイズできるように指定した事になります。

root.resizable( )の括弧の中横方向縦方向
(False, True)リサイズ不可リサイズ可
(False, False)リサイズ不可リサイズ不可
(True, False)リサイズ可リサイズ不可
(True, True)リサイズ可リサイズ可

ウィンドウアイコンの変更

import tkinter

root = tkinter.Tk()

root.title("GUI")

print(root.title())

root.geometry("500x50")

root.resizable(False, True)

root.iconbitmap("icon.ico")       #★

root.mainloop()

追加した箇所は#★の1か所です。

root.iconbitmap("icon.ico")

root.iconbitmap()の括弧の中で、アイコンのファイルを指定します。今回はicon.icoというファイルを指定しました。

このアイコンの画像ファイルは下記のようにプログラムファイルと同じ場所(フォルダ)に置きましょう。

画像ファイルから.icoファイル作成する時に便利なウェブサイトがありますので、参考にリンクを張り付けておきます。

画面の背景色の変更

import tkinter

root = tkinter.Tk()

root.title("GUI")

print(root.title())

root.geometry("500x50")

root.resizable(False, True)

root.iconbitmap("icon.ico")

root.configure(bg="#ffff00")      #★

root.mainloop()

追加した箇所は#★の1か所です。

root.configure(bg="#ffff00")

root.configure()の括弧の中で背景色を指定します。今回は黄色ffff00を指定しました。

色のコードを調べる時に便利なウェブサイトがありますので、下記に貼り付けておきます。

フルスクリーン表示

注意:フルスクリーンモードは解除する時には”Alt + F4″をしましょう。

import tkinter
import time           #★

root = tkinter.Tk()

root.title("GUI")

print(root.title())

root.geometry("500x50")

root.resizable(False, True)

root.iconbitmap("icon.ico")

root.configure(bg="#ffff00")

root.attributes("-fullscreen", True)     #★
root.update()                            #★
time.sleep(5)                            #★
root.attributes("-fullscreen", False)    #★


root.mainloop()

追加した箇所は#★の5か所です。

import time

timeモジュールをインポートしました。これは、time.sleep()関数を使用したいためです。time.sleep(5)とする事で5秒間プログラムを止める事ができます。

root.attributes("-fullscreen", True)

この1行でフルスクリーンにする事ができます。このプログラムを実行すると、全画面が黄色になります。

root.update()
time.sleep(5)

root.update()でGUI画面を更新します。time.sleep(5)で5秒間停止します。

root.attributes("-fullscreen", False)    

これで、フルスクリーンモードを解除します。

今回、フルスクリーンにする ⇒ 5秒間停止する ⇒ フルスクリーンを解除するとしましたが、このプログラムの間にroot.update()を入れています。なぜか、このコマンドを入れないと、フルするクリーン ⇒ 5秒間停止 ⇒ フルスクリーン解除ができません。理由はわかりませんが、今回root.update()を入れました。

もしroot.attributes(“-fullscreen”, True)のみを入れた場合、Esc(エスケープ)ボタンを押しても戻に戻る事ができないため、もし全画面を戻りたい場合は”Alt + F4″を使って戻りましょう。

Alt + F4は画面を閉じるコマンドです。

常に最前面に表示

import tkinter
import time

root = tkinter.Tk()

root.title("GUI")

print(root.title())

root.geometry("500x50")

root.resizable(False, True)

root.iconbitmap("icon.ico")

root.configure(bg="#ffff00")

#root.attributes("-fullscreen", True)
#root.update()
#time.sleep(5)
#root.attributes("-fullscreen", False)

root.attributes("-topmost", True)         #★

root.mainloop()

追加した箇所は#★の1か所です。

root.attributes("-topmost", True) 

この1行を入れる事で、常にGUI画面が最前面に来るようになります。Falseをすると、元に戻り、常に最前面ではなくなります。

ウィンドウの最大化/最小化

import tkinter
import time

root = tkinter.Tk()

root.title("GUI")

print(root.title())

root.geometry("500x50")

#root.resizable(False, True)

root.iconbitmap("icon.ico")

root.configure(bg="#ffff00")

#root.attributes("-fullscreen", True)
#root.update()
#time.sleep(5)
#root.attributes("-fullscreen", False)

#root.attributes("-topmost", True)

root.state("zoomed")      #★
time.sleep(5)             #★
root.iconify()            #★

root.mainloop()

追加した箇所は#★の3か所です。

root.state("zoomed")      #★
time.sleep(5)             #★
root.iconify()            #★

root.state(“zoomed”) で最大化を実施

root.iconify() で最小化を実施しています。

最小/最大サイズの指定

import tkinter
import time

root = tkinter.Tk()

root.title("GUI")

print(root.title())

root.geometry("500x50")

#root.resizable(False, True)

root.iconbitmap("icon.ico")

root.configure(bg="#ffff00")

#root.attributes("-fullscreen", True)
#root.update()
#time.sleep(5)
#root.attributes("-fullscreen", False)

#root.attributes("-topmost", True)

#root.state("zoomed")
#time.sleep(5)
#root.iconify()

root.minsize(25, 25)          #★
root.maxsize(600, 100)        #★

root.mainloop()

追加した箇所は#★の2か所です。

root.minsize()で最小のウィンドウのサイズを指定します。括弧の中は(横幅, 縦幅)での指定になります。

root.maxsize()で最大のウィンドウのサイズを指定します。括弧の中は(横幅, 縦幅)での指定になります。

ウィンドウの表示位置を指定

import tkinter
import time

root = tkinter.Tk()

root.title("GUI")

print(root.title())

root.geometry("500x50")

#root.resizable(False, True)

root.iconbitmap("icon.ico")

root.configure(bg="#ffff00")

#root.attributes("-fullscreen", True)
#root.update()
#time.sleep(5)
#root.attributes("-fullscreen", False)

#root.attributes("-topmost", True)

#root.state("zoomed")
#time.sleep(5)
#root.iconify()

root.minsize(25, 25)
root.maxsize(600, 100)

root.geometry("+300+700")        #★

root.mainloop()

追加した箇所は#★の1か所です。

root.geometry()でウィンドウが最初に現れる位置を指定します。括弧の中に”+横方向+縦方向”で指定します。今回は+300+700なので、x=300,y=700の位置にウィンドウ現れるという事です。

ウィンドウを一時的に非表示/表示する

import tkinter
import time

root = tkinter.Tk()

root.title("GUI")

print(root.title())

root.geometry("500x50")

#root.resizable(False, True)

root.iconbitmap("icon.ico")

root.configure(bg="#ffff00")

#root.attributes("-fullscreen", True)
#root.update()
#time.sleep(5)
#root.attributes("-fullscreen", False)

#root.attributes("-topmost", True)

#root.state("zoomed")
#time.sleep(5)
#root.iconify()

root.minsize(25, 25)
root.maxsize(600, 100)

root.geometry("+300+700")

root.withdraw()     #★
time.sleep(2)       #★
root.deiconify()    #★

root.mainloop()

追加した箇所は#★の3か所です。

root.withdraw()で一度非表示にします。root.deiconify()で画面を再表示させます。

GUI画面を非表示にして隠したい時にroot.withdraw()を使います。

Tkinterの他の関数の使い方について知りたい場合は下記記事が非常に参考になります。

Pythonでエクセルを使いたい場合、OpenPyXLが非常に便利ですので、こちらも参考にしてみてください。

タイトルとURLをコピーしました