-----------------------------------------------------------------------------
音声認識【250209追記】

-----------------------------------------------------------------------------

ネットも生成AIもなしで話し相手ロボットを作ろう☆音声認識モジュール使ってみた

千代子のチャレンジ工房さん動画

 

 

MicroPython I2C library and example for Gravity: Offline Language Learning Voice Recognition Sensor

 

以下、追記前と同じ

-----------------------------------------------------------------------------
Tkinter
-----------------------------------------------------------------------------

■【Tkinterの使い方】PythonでのGUIアプリ作成方法をわかりやすく解説!
https://pythonsoba.tech/tkinter/

■Entryを使い入力フォームを作成する方法
https://little-movie.com/entry/

import tkinter as tk
root = tk.Tk()
root.title('Entry')
root.geometry('300x300')
entry = tk.Entry(root, width=20)
entry.pack(pady=10)
root.mainloop()


Entry()’クラスの引数は以下の通りです。
‘master’-このフレームを配置するウィンドウまたはフレームの親要素。
‘width’-ウィジェットの横幅(文字数)。
‘textvariable’-Entryウィジェットに関連付けられた文字列変数。
‘show’-入力された文字を置き換える文字。
‘bg’-背景色。
‘fg’-前景色。
‘font’-フォントの指定。
‘relief’-ウィジェットの枠線のスタイルを指定。
‘borderwidth’-ウィジェットの枠線の幅を指定。
先ほど作成したフォームには引数に親ウィンドウの’root’を指定し、’width’を追加し幅を20文字の長さにしています。

■入力されたテキストを受け取る方法
Entryでユーザーから入力された内容を受け取るには、’get()’メソッドを使用します。
例えば、フォームにテキストを入力し、ボタンを押すことでコンソール上に入力した内容をsyつ力する場合は下記コードのようになります。

import tkinter as tk
def get_entry():
    print(entry.get())
root = tk.Tk()
root.title('Entry')
root.geometry('300x300')
entry = tk.Entry(root, width=20)
entry.pack(pady=10)
button = tk.Button(root, text='受け取る', command=get_entry)
button.pack()
root.mainloop()

■[Python/Tkinter] Enterキーで処理を実行する方法(Enter入力を取得)
https://tomtom-stock.com/2023/02/03/tkinter-enter-return/

今回は、Tkinter上に作成したテキストボックスに入力した内容を “Enter” キーのクリックで表示させる方法を解説していきます!
Enter入力とウィジェットを紐づける
キーボード入力とTkinter上のウィジェットを紐づけるためには、.bind() メソッドを使用します。
Enterキーを紐づける場合はイベントに <Return> を指定します。
ウィジェット名.bind("<Return>", 関数名)

■Entry入力中にEnterキーで処理実行
https://zackblog7.com/%E3%80%90tkinter%E3%80%91entry%E5%85%A5%E5%8A%9B%E4%B8%AD%E3%81%ABenter%E3%82%AD%E3%83%BC%E3%81%A7%E5%AE%9F%E8%A1%8C/

import tkinter as tk
def enter_key():
    print("実行!")
root = tk.Tk()
root.geometry("200x200")
x = tk.Entry(root, width = 10)
x.pack()
x.bind("<Return>", lambda event: enter_key())
root.mainloop()

-----------------------------------------------------------------------------
OS自動アップデート停止
-----------------------------------------------------------------------------
■Windows11の自動アップデートを無効化する方法
https://jp.easeus.com/todo-backup-resource/how-to-stop-auto-update-windows-10.html

サービスででWindows Updateを無効にする
1.win + Rを同時に押して、services.mscを入力してエンターキーを押します。
2.サービスのウィンドウが表示されます。サービスのリストからWindows Updateを選択、ダブルクリックしてください。
3.「全般」タブで「スタートアップの種類」オプションの隣にあるドロップダウンアイコンをクリックし、「無効」オプションを選択します。
4.「適用」をクリックし、「OK」をクリックし、変更を適用します。それによって、Windows 11の自動更新が永久に無効になるようになります。
※この操作は、Windows Updateサービスを完全に無効にするので、Windowsは更新をダウンロード&インストールしないようになります。後ほどアップデートしたい場合は、同じ画面で再び有効化にする必要があります。

-----------------------------------------------------------------------------
MS-IME無効化
-----------------------------------------------------------------------------
■Windowsで「Microsoft IME」を無効にする方法
[ATOK]や[Google日本語入力]などのIMEを使用している場合、Windows 11やWindows 10にプリインストールされている【Microsoft IME】は無効にしておくと使い勝手が良いかもしれません。

設定の[時刻と言語]>[言語と地域]>[日本語]>[…]より
【言語のオプション】をクリック
 ↓
オプションの[キーボード]>[Microsoft IME]>[…]より【削除】クリック。



-----------------------------------------------------------------------------
PythonでIME全角半角切替え
-----------------------------------------------------------------------------

■pythonでIME(半角・全角)を切り替える方法
https://zenn.dev/dimebag29/articles/b51599c8906624

外部ライブラリのpynputによる仮想キー入力によってIMEを切り替え

from pynput import keyboard
import time
KeyCon = keyboard.Controller()
# IMEをオンにする
KeyCon.press(keyboard.KeyCode.from_vk(243))
KeyCon.release(keyboard.KeyCode.from_vk(244))
time.sleep(3)
# IMEをオフにする
KeyCon.press(keyboard.KeyCode.from_vk(244))
KeyCon.release(keyboard.KeyCode.from_vk(243))

-----------------------------------------------------------------------------
開いたEXCELにPythonから入力
-----------------------------------------------------------------------------
pywin32・win32com.clientを使ってPythonで起動済みExcelを操作する
https://www.relief.jp/docs/pywin32-operate-running-excel-from-python.html


import win32com.client
xl = win32com.client.GetObject(Class="Excel.Application")
xl.Windows(1).Top = 30
xl.Windows(1).Left = 20
xl.Range("A1").Value = "hello, world!"
xl.Range("A2").Value = "test OK?"
str_input = input()
print(str_input)
xl.Range("A3").Value = str_input

-----------------------------------------------------------------------------
Pywin32の使い方【抜粋】
-----------------------------------------------------------------------------
Python pywin32(win32com)Excel操作備忘録
https://qiita.com/feo52/items/150745ae0cc17cb5c866

# Excel起動
    xlApp = win32com.client.Dispatch("Excel.Application")

    # https://stackoverflow.com/questions/2790825/
    # ExcelのWindow最大化
    win32gui.ShowWindow(xlApp.hwnd, win32con.SW_MAXIMIZE)

    # Excel表示
    xlApp.Visible = 1

    # Excelファイルオープン
    wb = xlApp.Workbooks.Open(f"{os.getcwd()}\\sample.csv")

    # Excelシートオブジェクト
    ws = wb.Worksheets(1)

    # ------------------------------------------------------------------

    # 指定したシートを選択
    # Select()の使用前にシートのActivate()が必要
    ws.Activate()

    # ------------------------------------------------------------------

    # A1セルを選択
    ws.Range("A1").Select()

    # A1~B2を選択
    ws.Range("A1:B2").Select()

    # A1セルを選択
    ws.Cells(1, 1).Select()

    # A1~B2を選択
    ws.Range(ws.Cells(1, 1), ws.Cells(2, 2)).Select()

    # ------------------------------------------------------------------

    # 全セルを選択
    ws.Cells.Select()

    # A1セルに値を設定
    ws.Range("A1").Value = 99999

    # A1セルに数式を設定
    ws.Range("A1").Formula = "=(3.14159-3)*100000"

    # ------------------------------------------------------------------

    # A1セルの表示形式を設定
    ws.Range("A1").NumberFormatLocal = "0.00"

    # A1セルにフォントを設定
    ws.Range("A1").Font.Name = "Yu Gothic UI"

    # A1セルのフォントのサイズを設定
    ws.Range("A1").Font.Size = 12

    # A1セルのフォントを太字に設定
    ws.Range("A1").Font.Bold = True

    # A1セルのフォントを斜体に設定
    ws.Range("A1").Font.Italic = True

    # A1セルのフォントに下線を設定
    ws.Range("A1").Font.Underline = xlUnderlineStyleSingle

    # A1セルのフォントに取消線を設定
    ws.Range("A1").Font.Strikethrough = True

    # ------------------------------------------------------------------

    # A1セルの文字の色を設定(R+Gx256+Bx256x256)
    ws.Range("A1").Font.Color = 255 + 0 * 256 + 0 * 256 * 256

    # A1セルの文字の色を設定(指定順序BGR)
    ws.Range("A1").Font.Color = int("FF0000", 16)

    # A1セルの文字の色を設定(指定順序RGB)
    ws.Range("A1").Font.Color = int("".join(list(reversed(["FF0000"[i : i + 2] for i in range(0, 6, 2)]))), 16)

    # A1セルの文字の色を設定(デフォルト)
    ws.Range("A1").Font.ColorIndex = xlColorIndexAutomatic

    # ------------------------------------------------------------------

    # A1セルの背景の色を設定(R+Gx256+Bx256x256)
    ws.Range("A1").Interior.Color = 255 + 255 * 256 + 0 * 256 * 256

    # A1セルの背景の色を設定(指定順序BGR)
    ws.Range("A1").Interior.Color = int("FFFF00", 16)

    # A1セルの背景の色を設定(指定順序RGB)
    ws.Range("A1").Interior.Color = int("".join(list(reversed(["FFFF00"[i : i + 2] for i in range(0, 6, 2)]))), 16)

    # A1セルの背景の色を設定(デフォルト)
    ws.Range("A1").Interior.ColorIndex = xlColorIndexNone

    # A1セルの値や数式を消去
    ws.Range("A1").ClearContents()

    # シートの非表示
    ws.Visible = xlSheetHidden

    # シートの表示
    ws.Visible = xlSheetVisible

    # ------------------------------------------------------------------

    # シートの保護の設定
    ws.Protect()

    # シートの保護の解除
    ws.Unprotect()

    # シートをパスワード付きで保護の設定
    ws.Protect(Password="hoge")

    # シートのパスワード付きの保護の解除
    ws.Unprotect(Password="hoge")

    # ------------------------------------------------------------------

    # ブックの保護の設定
    wb.Protect()

    # ブックの保護の解除
    wb.Unprotect()

    # ブックをパスワード付きで保護の設定
    wb.Protect(Password="hoge")

    # ブックのパスワード付きの保護の解除
    wb.Unprotect(Password="hoge")

    # 再計算
    ws.Calculate()

    # 再計算
    xlApp.Calculate()

    # Excelの警告メッセージの表示の停止
    xlApp.DisplayAlerts = False

    # Excelの警告メッセージの表示の開始
    xlApp.DisplayAlerts = True

    # Excelの画面の更新を停止
    xlApp.ScreenUpdating = False

    # Excelの画面の更新を開始
    xlApp.ScreenUpdating = True

    # https://stackoverflow.com/questions/3735378/#8561483
    # Excelの画面の更新を強制
    xlApp.ActiveWindow.SmallScroll()
    xlApp.WindowState = xlApp.WindowState

    # ------------------------------------------------------------------

    # ActiveWorkbookの取得
    wb = xlApp.ActiveWorkbook
    print(wb.Name)

    # ActiveWindowの取得
    aw = xlApp.ActiveWindow
    print(aw.Caption)

    # ActiveSheetの取得
    ws = xlApp.ActiveSheet
    print(ws.Name)

    # ActiveSheetの取得
    ws = wb.ActiveSheet
    print(ws.Name)

    # ブックをファイルに上書き保存
    # wb.Save()

    # ブックをXLSXファイルに保存
    wb.SaveAs(Filename=f"{os.getcwd()}\\outputSaveAs.xlsx", FileFormat=xlOpenXMLWorkbook)

    # ブックをXLSファイルに保存
    wb.SaveAs(Filename=f"{os.getcwd()}\\outputSaveAs.xls", FileFormat=xlWorkbookNormal)

    # ブックをCSVファイルに保存
    wb.SaveAs(Filename=f"{os.getcwd()}\\outputSaveAs.csv", FileFormat=xlCSV)

    # ------------------------------------------------------------------

    # ブックをクローズ
    # wb.Close()

    # ブックを保存せずにクローズ
    wb.Close(SaveChanges=False)

    # ------------------------------------------------------------------

    # Excel終了
    xlApp.Quit()