LiuK
Python関係の備忘録
日本の国籍法における台湾の扱いについての情報整理
Arduino、電子工作関連の自分の記事。
(Python学習初心者の試行錯誤・備忘録です) PySimpleGUIを使用しながら、背後にあるTkinterの機能にアクセスしたい場合どうするの?と思って、Copilotに聞きました。 import PySimpleGUI as sg# PySimpleGUIのウィンドウを作成layout = [[sg.Text('こんにちは、世界!')]]window = sg.Window('ウィンドウのタイトル', layout, finalize=True)# Tkinterの
(Python学習初心者の試行錯誤・備忘録です) の中で、PySimpleGUIのテーマを切り替えられるようにした際、 #表示テーマ themelist=['LightGreen','Black', 'BlueMono', 'BluePurple', 'BrightColors', 'BrownBlue', 'Dark', 'Dark2', 'DarkAmber', 'DarkBlack', 'DarkBlack
(Python学習初心者の試行錯誤・備忘録です) 「単語暗記アプリ」は、まあ基本機能は揃ってコードの内容も安定してきたと思います。学習に使える目途はつきました。 ここで、「派生版」として「短文暗記アプリ」も作っておこうと思います。 かつて自分が受験生だった頃、英作文の対策で、対訳の基本例文の暗記をやりました。訳語の内容を見て、英文がスラスラ思い出せるようにする。例文が700文もあって結局全部は覚えきれなかった・・。今だと、有名どころの教材では、まずは100文とかからある
(Python学習初心者の試行錯誤・備忘録です) しばらく「機能追加」をしてきて、だんだんと「なんか違うな」という引っ掛かりを感じ始めました。それというのは のメインのコードで #while True ループの中、抜粋 elif event =="-BTN_MEMORIZE-": #記憶定着OKなら。Levelを一つ上げ、タイムスタンプ更新,表示データ更新 mycontroller.inc_level() mycontro
テストで単語データを千個単位で入れたり消したりしているうちに、SQLiteのDBファイルのサイズがだんだん大きくなってきてしまいました。 auto_vacuum という機能があるようで SQLで "PRAGMA auto_vacuum = FULL" を実行してみました。 だけど、ファイルサイズ小さくならない。どうやら、auto_vacuumは少し空き領域ができたからと言って、すぐに動作するわけではないようです。 すぐ効果を見たかったのでVACUUMコマンドを用意して、
(Python学習初心者の試行錯誤・備忘録です) 実際に使ってみるといろいろ気づきがあります。 「記憶定着レベル」を最初「レベル0」から始めて、記憶定着が確認できるたびに「レベル上げ」していくやり方。これ、テスト段階で10~20個程度の単語リストで試す分には非常にうまく行っておりました。 ・・よし、それじゃあ、1000個単語覚えるぞ、と大量の単語を投入して見たら困ったことになった。最初見た単語が覚えられなくて「まだ」ボタンをクリックして「流して」しまうと、次にその単語が表
(Python学習初心者の試行錯誤・備忘録です) 気付いたバグについて。 このアプリ、最初に単語と訳語のセットをCSVで読み込むとき ここから「LoadCSV」とやると、ポップアップが開いて BrowseからCSVファイルを選んでOKとやると、 「今テーブルにあるデータを削除して、CSVファイルのデータを読み込む」 と言う流れでした。これはOKをクリックすれば問題なく動作していました。そして、この「読み込み」の操作はめったにやらないので問題に気が付かなかった。 そ
(Python学習初心者の試行錯誤・備忘録です) ここまでのところ、新しい教材(単語リスト)をCSVで読み込むと、テーブルにあるそれ以前のデータを削除してから新しい単語リストを読み込む処理にしています。 mvctest_controller.pyより #抜粋class Controller: def loadcsv(self, csvfilename:str) -> None: self.mycards.clear_table() se
(Python学習初心者の試行錯誤・備忘録です) グラフで「見える化」すると、アプリの「間抜け」な動作が目についてきます。学習が進んで、記憶定着レベルがだいぶ上がってきたときに、たまたま一つど忘れしてしまうと 「覚えた」 「覚えた」 と同じ単語ばかり続けて出てきてしまいます。出題の優先順位は、「習熟レベルが低い順」で「タイムスタンプが古い順」 >ORDER BY level ASC, timestamp ASC としているからです。これを避けるために、指定したレベル以
(Python学習初心者の試行錯誤・備忘録です) 学習進捗の「見える化」へ学習進捗状況について、「レベル0:16個、レベル1:3個・・合計19個」などと、文字でごちゃごちゃ書いてあっても、やる気にはつながらないみたいです。わかりやすい「見える化」のためには、やはり「グラフ」ですよね。以前、グラフの埋め込み関連でmatplotlibの利用を試みた際には「変な問題」が発生していたのですが、 すうちさんにアドバイスいただいて解決できました。 この時の経験を生かし、今回はグラフ
(Python学習初心者の試行錯誤・備忘録です) 前回 までで、動作は基本的に変えずに、コード内容を整理する「リファクタリング」を試みました。MVCの役割ごとにファイルを分けたら、全体の見通しが良くなった(と思っているところ)。何のための作業かと言うと、その先の「機能拡張」をスムーズに行えるようにするためだろうと自分は思います。ここまではこんなアプリです。 「発声」をクリックすると、指定言語で読み上げる。「連想」をクリックすると、訳語(など、DBに読み込ませた二つ目のテキ
(Python学習初心者の試行錯誤・備忘録です) 前回、データベースを操作する「モデル」のコード mvctest_model.pyが一段落したので、 で書いていたtest.pyを書き換えます。mvctest_model.pyをimport して、Cardsクラスを利用する形に置き換えます。 Cardsクラスに用意した関数は、これまでのところ __init__() _create_table() loadfromcsv(csvfilename:str) loadfro
(Python学習初心者の試行錯誤・備忘録です) からの続きです。 前回はSELECT文で、条件に合わせた要素数を求める select_count_where という関数を、Cardsクラス内に作ったところまで。 次はSELECT文で条件・優先順位に応じてカードを一枚取り出す、 select_topcard_whereという関数を考えます。結果は辞書型で取れるようにします def select_topcard_where(self, condition, *p
(Python学習初心者の試行錯誤・備忘録です) 前回 で、AIのCopilot先生からは、 ・SQLでテーブル名や要素名を指定するのにプレースホルダは使えない ・「(pythonの)f-stringを使ってテーブル名をSQL文に直接埋め込」むことはできるが、「SQLインジェクションのリスクを高める可能性がある」 とアドバイスがありました。 ならば無理せず、テーブル名は固定でいい、と昨日の段階では思っていました。が、実際に始めて見るとSQL文中に「 t_cards 」と直
(Python学習初心者の試行錯誤・備忘録です) 素人が「MVCモデル」などと、知ったようなことを言うと、笑われてしまうかもしれません。ただ、基本的な考え方は、「DBの操作」と「画面の操作」と「このアプリ自体のロジック」とは分離する、と言うことだろうと解釈しています。それを意識しつつソースコードをバラしてみます。 MVC分離 メインプログラムmvctest.py の外に、自作モジュールのファイル M: mvctest_model.py V: mvctest_view.py
(Python学習初心者の試行錯誤・備忘録です) 半月ほど前に書いた が一応動いたことで、ちょっとした高揚感(笑)にしばらく浸っていました。少し時間が経って、冷静になってみると、コードの中身がひどいもんなので、初心者なりに「リファクタリング」的な作業をしてみようと思います。 test.py import csvimport sqlite3import TkEasyGUI as egfrom myspeech_lib import myspeechmydb = "mydb.