今日も見に来てくださって、ありがとうございます。最近コロナウイルスの話題で世間は騒がしいですが、皆さんはどうでしょうか。
ここのところ、tkinterにハマっています。今日は、tkinterで用意されているカーソルにどんなものがあるのか、ということで調べてみました。ご存知の通りTkで定義されているものが利用されます。本家のホームーページのここに利用可能なカーソルの一覧がありました。どんなカーソルがあるか、画像を取れればよかったのですが、実際に動かせるソースの方がいいかも、ということで、残しておきます。実行すると、以下のような画面が開きます。白いラベルをポイントすると、カーソルが変わります。


はい、ソースは以下の通りです。
import tkinter as tk class CursorTest(tk.Tk): def __init__(self): super().__init__() self.title("Curosor demo") self.group1 = tk.LabelFrame(self, padx=15, pady=10, text="ラベルを選択してください。カーソルが変更されます。") self.group1.pack(padx=10, pady=5) self.windows_native = ["X_cursor","arrow","based_arrow_down","based_arrow_up", "boat","bogosity","bottom_left_corner","bottom_right_corner", "bottom_side","bottom_tee","box_spiral","center_ptr", "circle","clock","coffee_mug","cross", "cross_reverse","crosshair","diamond_cross","dot", "dotbox","double_arrow","draft_large","draft_small", "draped_box","exchange","fleur","gobbler", "gumby","hand1","hand2","heart", "ibeam","icon","iron_cross","left_ptr", "left_side","left_tee","leftbutton","ll_angle", "lr_angle","man","middlebutton","mouse", "none","pencil","pirate","plus", "question_arrow","right_ptr","right_side","right_tee", "rightbutton","rtl_logo","sailboat","sb_down_arrow", "sb_h_double_arrow","sb_left_arrow","sb_right_arrow","sb_up_arrow", "sb_v_double_arrow","shuttle","sizing","spider", "spraycan","star","target","tcross", "top_left_arrow","top_left_corner","top_right_corner","top_side", "top_tee","trek","ul_angle","umbrella", "ur_angle","watch","xterm",] for i, c in enumerate(self.windows_native): l = tk.Label(self.group1, text=c, cursor=c, bg="white", font=(22)) l.grid(row=i//4, column=i%4, padx=3, pady=3, sticky=tk.W+tk.E) if __name__ == "__main__": cursorTest = CursorTest() cursorTest.mainloop()
ぼくの使っている環境はWindow10のAnaconda3で、それで動作確認しました。ちょっと美しくないカーソルもあるので、使えるものは限定されそうですね。
ちなみに、カーソルを指定しているのは、for
ループの中にある、Label
を作成するところのcursor=c
という指定のみです。Tkのドキュメントにもあるように、ざっと見たところ、すべてのウィジェットでこの指定でポイントしたときのカーソルを指定できるようです。