コピー2018.09.26この記事は約49分で読めます。最終確認ソース最終確認の結果、最終的にソースはこうなりました。'保存データを読み込もうとしましたが、読み込み許可がありません。'保存データの読み込み許可を確認するか、パス・ファイルが適当かを確認してください。'保存データを読み込もうとしましたが、読み込めません。'読み込み先機器に問題があるようです。'読み込み先機器の状態を確認してください。'保存データを読み込もうとしましたが、何らかのエラーが起きました。'保存データを書き込もうとしましたが、書き込み許可がありません。'保存先の書き込み許可を確認するか、パスが適当かを確認してください。'保存データを書き込もうとしましたが、書き込めません。'書き込み先機器に問題があるようです。'書き込み先機器の状態を確認してください。'保存データを書き込もうとしましたが、何らかのエラーが起きました。'ファイルデータを読み込もうとしましたが、読み込めません。'読み込み先機器に問題があるようです。'読み込み先機器の状態を確認してください。'ファイルデータを読み込もうとしましたが、何らかのエラーが起きました。'サポートしているOSは、UNIX系統と、Windowsです。'したがってこのOSはサポート外です。やっている過程で、一部仕様を変更した。パス表示の一番上、「ホーム」を、現在Treeで表示しているパスを表示させるようにする。ファイル・ディレクトリ読み込み数を最大1000として、それを越えた場合は強制的に読み込みを終了する。(普通に読んでしまうととても時間がかかってしまうので。そもそもそこまでまじめに読み込む必要はないし)パス情報ファイルpath_inf.jsonがないときは、強制的にSetSCN(設定画面)へ行く。Ubuntuでの最終確認まず、Ubuntu環境での確認。パス情報ファイルpath_inf.jsonを消した状態で、filelist.pyを起動。SenSCN(設定画面)に行ったので、「開始パス」が、現在指定している最初期の環境変数HOMEの内容(最初期のパス)と確認して、「・・・」キーで、開始パスを設定する。「太公望」ディレクトリを指定する。開始パスが「太公望」パスになったので、「OK」を押して、SetSCNを終了する。「只今のパス」が初期のパスだと確認して、「実行」ボタンを押す。「太公望」パスの内容が表示される。次に、この画面の「・・・」ボタンを押して、表示ディレクトリを変更する。「左巻きなると」パスを指定する。表示させたいパスが「左巻きなると」になったので、「実行」ボタンを押す。「左巻きなると」パスの内容が、表示された。ここでいったん、filelist.pyを終了し、もう一度filelist.pyを起動する。初期設定で設定した、「太公望」ディレクトリの内容が表示された。Windowsでの最終確認つぎに、Windows環境。filelist.kyをShift-JISに変更し、パス情報ファイルpath_inf.jsonを消した状態で、filelist.pyを起動。SetSCN(設定画面)に行ったので、「開始パス」が、現在指定している最初期の環境変数ドライブHOMEDRIVEとパスHOMEPATHの内容(最初期のパス)と確認して、「・・・」キーで、開始パスを設定する。Eドライブの「あははは」ディレクトリを指定する。開始パスがEドライブの「あははは」パスになったので、「OK」を押して、SetSCNを終了する。「只今のパス」が初期のパスだと確認して、「実行」ボタンを押す。Eドライブの「あははは」パスの内容が表示される。次に、この画面の「・・・」ボタンを押して、表示ディレクトリを変更する。Qドライブの「らんらんらん」パスを指定する。表示させたいパスがQドライブの「らんらんらん」になったので、「実行」ボタンを押す。Qドライブの「らんらんらん」パスの内容が、表示された。ここでいったん、filelist.pyを終了し、もう一度filelist.pyを起動する。初期設定で設定した、Eドライブの「あははは」ディレクトリの内容が表示された。ロジックの説明これで最終確認は終わった(もちろんほかにもテストをしてるが)ので、ロジックの説明を。原則ロジックの上の方から。'all'このロジックは、設定画面を「キャンセル」したときに、再度設定画面に行くと、キャンセルされたはずの内容が残っているという不具合が発生したため、改修。child_widget_each.text)これは、TreeViewを2回以上起動すると、前の内容が残ってしまう問題が発生したので入れた。node(https://stackoverflow.com/questions/47323210/how-to-apply-search-also-in-child-node)」の質問側のdemo.pyのロジックを参考にした。self.tv_p.children]:とは、リスト内包表記で、要はfor文でリストの内容を作るということで、self.tv_p.childrenの中に入っているtreeのノードを順次リスト上に展開するということになる。その時に使う変数はchild_widget(forの後ろ)で、式を使うこともできるが何も変更がないので、式はchild_widget(forの前)だけになる。これを使って、外側のfor文を使ってremove_nodeを順次実行させるのだ。選択したファイルパスとツリーの内容が、「実行」ボタンが押されるまで、内容が異なるという問題が発生したので、画面のように「只今のパス」表示をするようにした。これによる修正点は、次の通り。NoneTreeViewのroot_optionsをkvファイルから、pythonファイルに移す。20}と、入れるようにしている。表示件数の制限テストをしているときに判明したのですが、HOMEディレクトリ(WindowsではHOMEDRIVEとHOMEPATH)の中身を正直に表示してしまうと、とてつもなく時間がかかるという問題が発生した。このfilelist.pyは(後から分かったが)FileChooserと似たようなことをやっているのだが、なぜこちらが遅いのかはよくわからないが、たぶんロジックの組み方の問題だろう。それはさておき、この時間がかかるという問題を解決するため、表示件数を制限することにした。idv_dir():の中でカウントダウンし、0以下になったら自分自身の再帰呼び出しをやめる。「只今のパス」のメッセージ部分に、「〇〇個を越えたので中断しています」を追加している。釈然としないところがあるが、あくまでTreeViewの表示確認のためにファイル構造を利用しているので、ファイルそのものを正確に表示するわけではないので、こういう仕様とした。パス情報ファイルがないときに、強制的にSetSCN(設定画面)に移動パス情報ファイルpath_inf.jsonがないときに、システムの環境変数から初期開始パスを求めるのだが、この時に初期情報の入力を促すために、強制的にSetSCN(設定画面)へ行くようにした。'サポートしているOSは、UNIX系統と、Windowsです。'したがってこのOSはサポート外です。'set'jsonファイルを読み込むPathRead()でファイルがないときは、各種ファイル名関係変数を環境変数から求めた値に置き換えるが、この後にScreenManagerで、SetSCN(設定画面)への移動とする。単純にケアレスミスと言ってよいものだが、「実行」ボタン押下時のTreeView更新処理が抜けていた。else:とりあえず、これでfilelist.py,filelist.kvは、完成ということにした。自分でもまだ足りないところがあると思っているし、未知のバグもあるかもしれない。それに、まだ配布という大事業があるのだが、半年間格闘したkivyについて、その半年間を無駄にせぬようまとめる必要を強く感じるようになった。そこで、いったん終わりとして、反省会に移ることにする。22:19追記)Twitter避難の検討について正式に再開します【2022年版】ラズパイでファイルサーバーをつくってみた【取り急ぎ】サーバーが復旧しましたExcelでSVG出力できるか確かめてみた。荒川光線ブログ.ホーム検索トップサイドバータイトルとURLをコピーしました。