====== Tkinterを使ったデスクトップアプリの作成 ======
===== 基本パーツ =====
メインのウィンドウとラベル、1行のテキストエリア、ボタン等のテンプレート
import tkinter as tk
root = tk.Tk() # メインウィンドウ作成
root.title("アプリのタイトル")
# テキストエリアの作成
text_area_label = tk.Label(root, text="aaa")
text_area_label.grid(row=0, column=0, sticky=tk.W)
text_area = tk.Text(root, height=10)
text_area.grid(row=1,column=0, columnspan=2, sticky=tk.W)
def button_executed():
print("Executed")
button = tk.Button(root, text="実行", width=10, command=button_executed)
button.grid(row=0,column=1,sticky=tk.W)
# メインループ
root.mainloop()
===== コンテキストメニューを追加する =====
コンテキストメニューを追加するには、コンテキストメニューを追加させたいオブジェクトを指定して
'' tk.Menu(text_area, tearoff=0) ''のように記載する。
'' tk.Menu ''でメニューを作成し、''add_command()''でメニューの項目を追加する。
''tearoff=0''の設定はメニューを切り離せないようにするための設定。
''do_popup()''を作成してを行う。''text_area.bind("do_popup()関数を結びつける。
''event.x_root''と''event.y_root''によって、イベント発生時のマウスカーソルの座標を取得することができる。
import tkinter as tk
from tkinter import filedialog
import tkinter.messagebox as mb
root = tk.Tk() # メインウィンドウ作成
root.title("アプリのタイトル")
# テキストエリアの作成
text_area_label = tk.Label(root, text="aaa")
text_area_label.pack()
text_area = tk.Text(root)
text_area.pack()
# コンテキストメニューの作成
menu = tk.Menu(text_area, tearoff=0)
def copy_selected():
# 選択範囲を取得
start, end = text_area.tag_ranges(tk.SEL)
selected_text = text_area.get(start, end)
# クリップボードにコピー
root.clipboard_clear()
root.clipboard_append(selected_text)
menu.add_command(label="選択範囲をコピー", command=copy_selected)
menu.add_command(label="すべてコピー", command=lambda: text_area.event_generate("<>"))
menu.add_command(label="貼り付け", command=lambda: text_area.event_generate("<>"))
menu.add_separator()
menu.add_command(label="終了", command=root.quit)
def do_popup(event):
menu.tk_popup(event.x_root, event.y_root)
text_area.bind("", do_popup)
# メインループ
root.mainloop()