|
|
|||||||||||||||||||||||||||||
| Tkinter Saying Hello with Labels. |
H.Kamifuji . |
|
Tk(Tkinter)の最も簡単なウィジェットの1つ、では、ラベルを使ってチュートリアルを開始します。 Label は、Tkinter ウィジェットクラスで、テ>キストやイメージを表示するために使用されます。 ラベルは、ユーザーが表示するだけでは、対話しないウィジェットです。 "Hello World" の例で始まらないプログラミング言語への本や紹介はほとんどありません。 我々は、伝統を引き継ぐが、出力を "Hello World" ではなく、"Hello Tkinter" にわずかに変更します。 import tkinter as tk # if you are still working under a Python 2 version, # comment out the previous line and uncomment the following line # import Tkinter as tk root = tk.Tk() w = tk.Label(root, text="Hello Tkinter!") w.pack() root.mainloop() |
前項のスクリプトをlabels_01.pyという名前で保存すると、コマンドシェルを使って次のようにスクリプトを起動することができます。
[xxxx@yyyy ~]$ python hello.pyGnomeとLinuxの下でコマンドを実行すると、ウィンドウは次のようになります。 ![]() Windows10 では、Windowsのルックアンドフィールに表示されます。 ![]() |
Tk ツールキットを含む tkinter モジュールは、常にインポートします。 この例では、tkinter を tk に名前を変更してインポートしました。tkinterを実行する好ましい方法です。import tkinter as tktkinter を初期化するには、Tk ルートウィジェットを作成する必要があります。このウィジェットは、ウィンドウマネージャーが提供するタイトルバーやその他の装飾を持つウィンドウです。 ルートウィジェットは他のウィジェットよりも前に作成されなければならず、ルートウィジェットは1つしか存在できません。 root = tk.Tk()コードの次の行には Label ウィジェットが含まれています。 Label 呼び出しの最初のパラメータは、親ウィンドウの名前です。ここでは "root" です。 したがって、私たちのラベルウィジェットはルートウィジェットの子です。 キーワードパラメータ "text" は、表示されるテキストを指定します。 w = tk.Label(root, text="Hello Tkinter!")packメソッドは、ウィンドウのサイズを指定されたテキストに合わせるようにTkに指示します。 w.pack()ウィンドウはTkinterイベントループに入るまで表示されません: root.mainloop()私たちのスクリプトは、ウィンドウを閉じるまでイベントループに残ります。 |
すでに述べたように、ラベルには、テキストと画像を含めることができます。 次の例は、2つのラベルを含みます。1 つはテキスト、もう1つはイメー>ジです。
import tkinter as tk
root = tk.Tk()
logo = tk.PhotoImage(file="python_logo_small.gif")
w1 = tk.Label(root, image=logo).pack(side="right")
explanation = """At present, only GIF and PPM/PGM
formats are supported, but an interface
exists to allow additional image file
formats to be added easily."""
w2 = tk.Label(root,
justify=tk.LEFT,
padx = 10,
text=explanation).pack(side="left")
root.mainloop()
このスクリプトを起動すると、Gnome デスクトップで CentOS 7 Linuxを使用して次のようになります。右側は、Windows10 を使用した表示画面です。 ![]() "justify" パラメータは、LEFT、RIGHT または CENTER を使用して、上のテキストを成形するために使用できます。 padx は、テキストラベルの周りに追加の水平方向パディングを追加するために指定できます。 デフォルトのパディングは 1 ピクセルです。 pady は、垂直方向の埋め込みに似ています。 前の例のjustify(デフォルトはcenter)とpadxはこのようになります: ![]() テキストを画像の上に描きたいのですか? 問題ない! 1 つのラベルだけが必要で、同時に画像とテキストオプションを使用します。 デフォルトでは、イメージが与えられた場合、イメージはテキストの代わりに描画されます。 テキストを取得するには、複合オプションを使用する必要があり>ます。 複合オプションをCENTERに設定すると、テキストが画像の上に描画されます。
import tkinter as tk
root = tk.Tk()
logo = tk.PhotoImage(file="python_logo_small.gif")
explanation = """At present, only GIF and PPM/PGM
formats are supported, but an interface
exists to allow additional image file
formats to be added easily."""
w = tk.Label(root,
compound = tk.CENTER,
text=explanation,
image=logo).pack(side="right")
root.mainloop()
![]() 次のような Label コマンドを変更することで、画像を右側に、テキストを左右に 10 ピクセルのパディングで並べ替えることができます。
w = tk.Label(root,
justify=tk.LEFT,
compound = tk.LEFT,
padx = 10,
text=explanation,
image=logo).pack(side="right")
root.mainloop()
![]() 複合オプションが BOTTOM、LEFT、RIGHT、または TOP に設定されている場合、イメージはテキストの下、左、右または上に対応して描画されます。 |
|
ラベル、テキスト、キャンバスウィジェットのようないくつかの Tk ウィジェットでは、テキストの表示に使用するフォントを指定できます。 これは属性 "font" を設定することで実現できます。 通常は「フォント」設定オプションを使用します。 フォントは、プラットフォームに依存しないいくつかの領域の 1 つであると考える必要があります。 属性 fg を使用してテキストを別の色にすることができ、属性 bg を使用してラベルの背景色を変更することができます。 import tkinter as tk root = tk.Tk() tk.Label(root, text="Red Text in Times Font", fg = "red", font = "Times").pack() tk.Label(root, text="Green Text in Helvetica Font", fg = "light green", bg = "dark green", font = "Helvetica 16 bold italic").pack() tk.Label(root, text="Blue Text in Verdana bold", fg = "blue", bg = "yellow", font = "Verdana 10 bold").pack() root.mainloop()結果は次のようになります。 ![]() |
次のスクリプトは、停止ボタンが押されるまで、ラベルが動的に 1 ずつインクリメントされる例を示しています。
import tkinter as tk
counter = 0
def counter_label(label):
def count():
global counter
counter += 1
label.config(text=str(counter))
label.after(1000, count)
count()
root = tk.Tk()
root.title("Counting Seconds")
label = tk.Label(root, fg="green")
label.pack()
counter_label(label)
button = tk.Button(root, text='Stop', width=25, command=root.destroy)
button.pack()
root.mainloop()
結果は次のようになります。 ![]() |
| Saying Hello with Labels |
|