LiuK

台湾・台北市在住。最近、Arduino UNO R3とRaspberry Pi 4 を…

LiuK

台湾・台北市在住。最近、Arduino UNO R3とRaspberry Pi 4 をいじり始めたので、それらの備忘録的にnote を使わせてもらおうかと思っています。

マガジン

  • Python関連

    Python関係の備忘録

  • 日台重籍問題関連

    日本の国籍法における台湾の扱いについての情報整理

  • 電子ピアノ関係

  • Delphi関係

  • Arduino関係

    Arduino、電子工作関連の自分の記事。

最近の記事

PySimpleGUIの背後のTkinter

(Python学習初心者の試行錯誤・備忘録です) PySimpleGUIを使用しながら、背後にあるTkinterの機能にアクセスしたい場合どうするの?と思って、Copilotに聞きました。 import PySimpleGUI as sg# PySimpleGUIのウィンドウを作成layout = [[sg.Text('こんにちは、世界!')]]window = sg.Window('ウィンドウのタイトル', layout, finalize=True)# Tkinterの

    • PySimpleGUIのテーマのリスト

      (Python学習初心者の試行錯誤・備忘録です) の中で、PySimpleGUIのテーマを切り替えられるようにした際、 #表示テーマ themelist=['LightGreen','Black', 'BlueMono', 'BluePurple', 'BrightColors', 'BrownBlue', 'Dark', 'Dark2', 'DarkAmber', 'DarkBlack', 'DarkBlack

      • 派生版で短文対応

        (Python学習初心者の試行錯誤・備忘録です) 「単語暗記アプリ」は、まあ基本機能は揃ってコードの内容も安定してきたと思います。学習に使える目途はつきました。 ここで、「派生版」として「短文暗記アプリ」も作っておこうと思います。  かつて自分が受験生だった頃、英作文の対策で、対訳の基本例文の暗記をやりました。訳語の内容を見て、英文がスラスラ思い出せるようにする。例文が700文もあって結局全部は覚えきれなかった・・。今だと、有名どころの教材では、まずは100文とかからある

        • リファクタリング的な作業(6)

          (Python学習初心者の試行錯誤・備忘録です) しばらく「機能追加」をしてきて、だんだんと「なんか違うな」という引っ掛かりを感じ始めました。それというのは のメインのコードで #while True ループの中、抜粋 elif event =="-BTN_MEMORIZE-": #記憶定着OKなら。Levelを一つ上げ、タイムスタンプ更新,表示データ更新 mycontroller.inc_level() mycontro

        PySimpleGUIの背後のTkinter

        マガジン

        • Python関連
          50本
        • 日台重籍問題関連
          26本
        • 電子ピアノ関係
          12本
        • Delphi関係
          5本
        • Arduino関係
          48本

        記事

          機能追加(7)VACUUM

           テストで単語データを千個単位で入れたり消したりしているうちに、SQLiteのDBファイルのサイズがだんだん大きくなってきてしまいました。  auto_vacuum という機能があるようで SQLで "PRAGMA auto_vacuum = FULL" を実行してみました。 だけど、ファイルサイズ小さくならない。どうやら、auto_vacuumは少し空き領域ができたからと言って、すぐに動作するわけではないようです。  すぐ効果を見たかったのでVACUUMコマンドを用意して、

          機能追加(7)VACUUM

          機能追加(6)単語プール

          (Python学習初心者の試行錯誤・備忘録です) 実際に使ってみるといろいろ気づきがあります。 「記憶定着レベル」を最初「レベル0」から始めて、記憶定着が確認できるたびに「レベル上げ」していくやり方。これ、テスト段階で10~20個程度の単語リストで試す分には非常にうまく行っておりました。 ・・よし、それじゃあ、1000個単語覚えるぞ、と大量の単語を投入して見たら困ったことになった。最初見た単語が覚えられなくて「まだ」ボタンをクリックして「流して」しまうと、次にその単語が表

          機能追加(6)単語プール

          機能追加(5) キャンセル動作のバグ

          (Python学習初心者の試行錯誤・備忘録です)  気付いたバグについて。  このアプリ、最初に単語と訳語のセットをCSVで読み込むとき ここから「LoadCSV」とやると、ポップアップが開いて BrowseからCSVファイルを選んでOKとやると、 「今テーブルにあるデータを削除して、CSVファイルのデータを読み込む」 と言う流れでした。これはOKをクリックすれば問題なく動作していました。そして、この「読み込み」の操作はめったにやらないので問題に気が付かなかった。  そ

          機能追加(5) キャンセル動作のバグ

          機能追加(4)データベースのバックアップ

          (Python学習初心者の試行錯誤・備忘録です)  ここまでのところ、新しい教材(単語リスト)をCSVで読み込むと、テーブルにあるそれ以前のデータを削除してから新しい単語リストを読み込む処理にしています。 mvctest_controller.pyより #抜粋class Controller: def loadcsv(self, csvfilename:str) -> None: self.mycards.clear_table() se

          機能追加(4)データベースのバックアップ

          機能追加(3)同じ単語が続く問題への対応

          (Python学習初心者の試行錯誤・備忘録です) グラフで「見える化」すると、アプリの「間抜け」な動作が目についてきます。学習が進んで、記憶定着レベルがだいぶ上がってきたときに、たまたま一つど忘れしてしまうと 「覚えた」 「覚えた」 と同じ単語ばかり続けて出てきてしまいます。出題の優先順位は、「習熟レベルが低い順」で「タイムスタンプが古い順」 >ORDER BY level ASC, timestamp ASC としているからです。これを避けるために、指定したレベル以

          機能追加(3)同じ単語が続く問題への対応

          機能追加(2)グラフ

          (Python学習初心者の試行錯誤・備忘録です) 学習進捗の「見える化」へ学習進捗状況について、「レベル0:16個、レベル1:3個・・合計19個」などと、文字でごちゃごちゃ書いてあっても、やる気にはつながらないみたいです。わかりやすい「見える化」のためには、やはり「グラフ」ですよね。以前、グラフの埋め込み関連でmatplotlibの利用を試みた際には「変な問題」が発生していたのですが、 すうちさんにアドバイスいただいて解決できました。 この時の経験を生かし、今回はグラフ

          機能追加(2)グラフ

          機能追加(1)テーマ切り替え

          (Python学習初心者の試行錯誤・備忘録です) 前回 までで、動作は基本的に変えずに、コード内容を整理する「リファクタリング」を試みました。MVCの役割ごとにファイルを分けたら、全体の見通しが良くなった(と思っているところ)。何のための作業かと言うと、その先の「機能拡張」をスムーズに行えるようにするためだろうと自分は思います。ここまではこんなアプリです。 「発声」をクリックすると、指定言語で読み上げる。「連想」をクリックすると、訳語(など、DBに読み込ませた二つ目のテキ

          機能追加(1)テーマ切り替え

          リファクタリング的な作業(5)

          (Python学習初心者の試行錯誤・備忘録です)  前回、データベースを操作する「モデル」のコード mvctest_model.pyが一段落したので、 で書いていたtest.pyを書き換えます。mvctest_model.pyをimport して、Cardsクラスを利用する形に置き換えます。  Cardsクラスに用意した関数は、これまでのところ __init__() _create_table() loadfromcsv(csvfilename:str)  loadfro

          リファクタリング的な作業(5)

          リファクタリング的な作業(4)

          (Python学習初心者の試行錯誤・備忘録です) からの続きです。  前回はSELECT文で、条件に合わせた要素数を求める select_count_where という関数を、Cardsクラス内に作ったところまで。  次はSELECT文で条件・優先順位に応じてカードを一枚取り出す、 select_topcard_whereという関数を考えます。結果は辞書型で取れるようにします def select_topcard_where(self, condition, *p

          リファクタリング的な作業(4)

          リファクタリング的な作業(3)

          (Python学習初心者の試行錯誤・備忘録です) 前回 で、AIのCopilot先生からは、 ・SQLでテーブル名や要素名を指定するのにプレースホルダは使えない ・「(pythonの)f-stringを使ってテーブル名をSQL文に直接埋め込」むことはできるが、「SQLインジェクションのリスクを高める可能性がある」 とアドバイスがありました。  ならば無理せず、テーブル名は固定でいい、と昨日の段階では思っていました。が、実際に始めて見るとSQL文中に「 t_cards 」と直

          リファクタリング的な作業(3)

          リファクタリング的な作業(2)

          (Python学習初心者の試行錯誤・備忘録です)  素人が「MVCモデル」などと、知ったようなことを言うと、笑われてしまうかもしれません。ただ、基本的な考え方は、「DBの操作」と「画面の操作」と「このアプリ自体のロジック」とは分離する、と言うことだろうと解釈しています。それを意識しつつソースコードをバラしてみます。 MVC分離 メインプログラムmvctest.py の外に、自作モジュールのファイル M: mvctest_model.py V: mvctest_view.py

          リファクタリング的な作業(2)

          リファクタリング的な作業(1)

          (Python学習初心者の試行錯誤・備忘録です) 半月ほど前に書いた が一応動いたことで、ちょっとした高揚感(笑)にしばらく浸っていました。少し時間が経って、冷静になってみると、コードの中身がひどいもんなので、初心者なりに「リファクタリング」的な作業をしてみようと思います。 test.py import csvimport sqlite3import TkEasyGUI as egfrom myspeech_lib import myspeechmydb = "mydb.

          リファクタリング的な作業(1)