【Flet】よく使う単語のコピー用ボタン集をつくる【Python】

Flet,Python

よく使う単語のコピー用ボタン集をつくる

保存する程でもないけれど、よく使うちょっと面倒な単語や情報をボタンでまとめておき、クリックでコピーする方法です。


クリップボードに情報をコピーする

ボタンに設定されている情報をコピーする

概要

  • ボタンクリックでテキスト情報をクリップボードにコピーする
import flet as ft

def main(page: ft.Page):
    # クリップボードにテキストをコピーする関数
    def copy_to_clipboard(e):
        text = e.control.text
        page.set_clipboard(text)
        page.snack_bar = ft.SnackBar(ft.Text(f'Copied {text} to clipboard'))
        page.snack_bar.open = True
        page.update()

    # ボタンを作成
    sample_button = ft.ElevatedButton(text='りんご', on_click=copy_to_clipboard)

    # ボタンをページに追加
    page.add(sample_button)

# アプリを実行
ft.app(target=main)

クリックでクリップボードに情報をコピーするボタンを複数配置する

処理内容

  • カレントディレクトリにあるExcelファイルを読み込む
  • 読み込んだテキスト情報を持つボタンを作成する
  • このボタンをクリックするとテキスト情報がクリップボードにコピーされる

Excelファイル

  • ファイル名:data.xlsx
  • A,Bの2列×複数行で入力し、この行は可変とする

コード

import flet as ft
import pandas as pd

def main(page: ft.Page):
    # ページ全体のレイアウト
    page.window_width=400
    page.window_height=600
    page.scroll=True

    # クリップボードにテキストをコピーする関数
    def copy_to_clipboard(e):
        text = e.control.text
        page.set_clipboard(text)
        page.snack_bar = ft.SnackBar(ft.Text(f'Copied {text} to clipboard'))
        page.snack_bar.open = True
        page.update()

    # Excelファイルからデータを読み込む
    df = pd.read_excel('data.xlsx', usecols='A,B', header=None, dtype=str)

    # ボタンを表示するためのリスト
    buttons = []

    # データフレームの各行からボタンを作成し、リストに追加
    for index, row in df.iterrows():
        col_a_button = ft.ElevatedButton(text=row[0], on_click=copy_to_clipboard)
        col_b_button = ft.ElevatedButton(text=row[1], on_click=copy_to_clipboard)
        buttons.append(ft.Row([col_a_button, col_b_button]))

    # ページにボタンを追加
    for row in buttons:
        page.add(row)

# アプリを実行
ft.app(target=main)

アプリ実行結果

ボタンクリック結果

Flet,Python

Posted by junichi