Pythonで標準で利用できるGUIツールキットにtkinterがあります。
以下のようにtkinterモジュールインポートで簡単に利用できます。
import tkinter
一つ気になった点がありました。
GUIで指定できる背景色や文字色などの色名についてです。
Pythonのtkinterマニュアルには以下の通り記されていました。
color
色は rgb.txt ファイルの X カラーの名前か、または RGB 値を表す文字列として与えられます。
rgb.txtファイルとは何か?
マニュアルにあったrgb.txtには、tkinterで利用できるカラー名が記述されているのだろうと考えPythonのインストールフォルダ(Windowsの場合のPython3.8インストールフォルダであればC:/Users/《ユーザ名》/AppData/Local/Programs/Python/Python38/)を検索してみたのですが、rgb.txtやそれらしきファイルは見当たらず。
マニュアルに記載されていた《rgb.txt ファイルの X カラーの名前》のXカラーとはUnixのXウインドウシステムだと気づき、調べてみるとUnixがインストールされている端末の /usr/lib/X11/rgb.txt ファイルの事だと分かりました。
tkinterで使える色名へのリンク
海外のサイトの方がきちんと情報があった中でtkinterで使える色名の一番分かりやすかった ページを以下に示します。このサイトは色名がそれぞれの色で表示されているのでとても分かりやすいと思います。
上記サイトの注意点
後半のSGI~で始まる色名は使えません。あと色名リストの最後から3つ目のIndigoは使えてIndigo2は使えません。一番最後のCrimsonは使えます。
見やすさは前述のページに劣りますが、WindowsやMacOSなどOS別の色名も含めて網羅されている以下のページもお勧めです。Python公式サイトtkinterの項目からリンクされているページです。
colors manual page – Tk Built-In Commands
上記ページによると例えばWindowsでは
systemBackground
とするとOSデフォルトの背景色が指定できたりします。
tkinterの色名は空白や大文字の扱いがあいまい
tkinterを使ったPythonスクリプトを作って気づいたのですが、色名で使われている文字は大文字小文字の区別なく表記できます。また、skyblueならsky blueのように単語同士に空白を入れても認識されます。
例)
色名 | 〇 | 〇 |
---|---|---|
Crimson | crimson | CRIMSON |
SkyBlue | skyblue | sky blue |
YellowGreen | yellowgreen | Yellow Green |
極端な話、色名がSkyBlueと指定されていたら、SKYBLUE, skyblue, Sky blue, sKy BLUE… 全て可能です。単語と単語の区切りは区別されるようです。例)sk yblueは×。
greyとgrayは同じ
色名のリストを見ていて気付いたのですが、greyとgrayは表記が違うだけで同じ色です。
さらにgreyとgray以外にも、グレー系がgrey0~grey100まで存在します。(gray0~gray100もある!)ちなみにgrey100とgray100は16進表記で#FFFFFFなのでwhite(白)と同じです。
こんなところでUnixの名残りに出会うとは思いませんでした。
tkinterを使ったプログラムでの色名記述例
実際にtkinterでの色名を使ったスクリプトを紹介します。
実行イメージ(ウインドウの背景色)
# tkinterでウインドウを出す
import tkinter # Tk GUIツールキットを使う(必須)
root = tkinter.Tk() #
root.title("PythonのGUIウインドウ")
root.geometry("320x200")
root.resizable(True, True)
root.configure(bg="skyblue") # 背景色を指定
root.mainloop()
実行イメージ(ボタンの文字色と背景色)
# tkinterでボタンを表示
import tkinter # Tk GUIツールキットを使う(必須)
root = tkinter.Tk() #
root.title("PythonのGUIウインドウ")
root.geometry("800x600")
button1 = tkinter.Button(root, text="tkinterの色名", bg="forest green", fg="orange", font=("Times New Roman", 48) )
button1.place(x=200, y=200)
root.mainloop()
以上、Python:tkinterで指定できる色名についてでした。
コメント