tkinterで忘れがちなこと色々 其の4
いつもPyrhonプログラムを作るときに調べながら作るけどもすぐ忘れてしまう。なのでメモを残しておこうと。其の4。
実行結果は以下の通り。
LabelとEntryを組み合わせて使うことが多いので、あらかじめ組み合わせたクラスを作成した例。
実行結果は以下の通り。
長い文字列の入力、出力を扱いたい場合に便利。値の入力はinsert()で、値の取得はget()で可能。
返り値にはbool(True/False)が返ってくる。尚、mkinter.messagebox.askquestionもほぼ同じ動作をする(返り値にstrのyes/noが返ってくる)。
実行結果は以下の通り。
返り値は選択した色のtupleが返ってくる。例えばこんな感じ"((160.625, 160.625, 160.625), '#a0a0a0')"。キャンセルを選択すると(None, None)が返る。
目次
- tkinter.Frameを継承してカスタマイズGUIパーツを定義
- スクロールバー付きテキストボックス(tkinter.scrolledtext)
- OK/キャンセル付きメッセージボックス(tkinter.messagebox.askokcancel)
- カラー選択パレット(tkinter.colorchooser.askcolor)
- tkinter関連の記事一覧
tkinter.Frameを継承してカスタマイズGUIパーツを定義
import tkinter class KeyValueEntry(tkinter.Frame): def __init__(self, root, default_val=None, key_kw=dict(), val_kw=dict()): super().__init__(root) self.key = tkinter.Label(self, key_kw) self.val = tkinter.Entry(self, val_kw) if default_val: self.val.insert(0, default_val) def pack(self, **kw): kw.update({"expand": True, "fill": tkinter.X}) super().pack(kw) self.key.pack(side=tkinter.LEFT) self.val.pack(side=tkinter.LEFT, expand=True, fill=tkinter.X) def get(self): return self.val.get() if __name__ == '__main__': root = tkinter.Tk() kv1 = KeyValueEntry(root, key_kw={"text": "key1", 'width': 10}, default_val="val1") kv2 = KeyValueEntry(root, key_kw={"text": "key2", 'width': 10}, default_val="val2") kv3 = KeyValueEntry(root, key_kw={"text": "key3", 'width': 10}, default_val="val3") kv1.pack(padx=5, side=tkinter.TOP) kv2.pack(padx=5, side=tkinter.TOP) kv3.pack(padx=5, side=tkinter.TOP) print(kv1.get()) print(kv2.get()) print(kv3.get()) tkinter.mainloop() exit()
実行結果は以下の通り。
LabelとEntryを組み合わせて使うことが多いので、あらかじめ組み合わせたクラスを作成した例。
スクロールバー付きテキストボックス(tkinter.scrolledtext)
import tkinter.scrolledtext if __name__ == '__main__': root = tkinter.Tk() st = tkinter.scrolledtext.ScrolledText(root, width=30, height=10) st.pack() st.insert(1.0, "hogehoge") print(st.get(1.0, tkinter.END)) tkinter.mainloop()
実行結果は以下の通り。
長い文字列の入力、出力を扱いたい場合に便利。値の入力はinsert()で、値の取得はget()で可能。
OK/キャンセル付きメッセージボックス(tkinter.messagebox.askokcancel)
import tkinter.messagebox if __name__ == '__main__': okng = tkinter.messagebox.askokcancel(title="title", message="message") print(okng)
実行結果は以下の通り。
カラー選択パレット(tkinter.colorchooser.askcolor)
import tkinter.colorchooser if __name__ == '__main__': color = tkinter.colorchooser.askcolor() print(color)
実行結果は以下の通り。
返り値は選択した色のtupleが返ってくる。例えばこんな感じ"((160.625, 160.625, 160.625), '#a0a0a0')"。キャンセルを選択すると(None, None)が返る。
コメント
コメントを投稿