ユーザ用ツール

サイト用ツール


python:desktop_app

文書の過去の版を表示しています。


Tkinterを使ったデスクトップアプリの作成

コンテキストメニューを追加する

コンテキストメニューを追加するには、コンテキストメニューを追加させたいオブジェクトを指定して tk.Menu(text_area, tearoff=0) のように記載する。 tk.Menu でメニューを作成し、add_command()でメニューの項目を追加する。 tearoff=0の設定はメニューを切り離せないようにするための設定。

do_popup()を作成してを行う。text_area.bind(“<Button-3”, do_popup)で、 テキストエリアの右クリックイベントにdo_popup()関数を結びつける。 event.x_rootevent.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("<<Copy>>"))
menu.add_command(label="貼り付け", command=lambda: text_area.event_generate("<<Paste>>"))
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("<Button-3>", do_popup)
 
# メインループ
root.mainloop()
python/desktop_app.1735702688.txt.gz · 最終更新: 2025/01/01 12:38 by mikoto