Tips的に色々

仕事から趣味に至るまで徒然なるままに

PythonでWindowを表示させる方法の考察(tkinterdnd2編)

2023-09-10 18:55:16 | プログラミング
一番良く見るパターンがこれ。

    from tkinter import *
    from tkinterdnd2 import *

    root = TkinterDnD.Tk()
    (略)

    root.mainloop()

関数もクラスも使わず手続き型言語のようにグローバルに記述。
オブジェクト指向も何もあったもんじゃない。

次に多いのがこれ。

    from tkinter import * 
    from tkinterdnd2 import *

    class App(TkinterDnD.Tk):
        def __init__(self):
            super().__init__()
            (略)

    if __name__ == "__main__":
        root = App()
        root.mainloop()

オブジェクト指向にはなっているけどクラスの必然性皆無。

さて、それじゃmain関数を実装……ルーチンが開始できない笑

折衷案としてこれはどうだろう?

    from tkinter import *
    from tkinterdnd2 import *

    def main():
        root = TkinterDnD.Tk()
        window_setting(root)
        root.mainloop()

    def window_setting(root):
        (略)

    if __name__ == "__main__":
        main()

本体はif文なんだけど、苦肉の策としてmain関数を作り出してみた。
これだとmainloopの前後もmain関数に書けるから可読性上がらないかな?

とりあえずしばらくはこの記法で行ってみようと思う。

--------
tsutaya0225あっとgmail.com


VS Codeから「ソース管理」が消えた!

2023-08-08 19:15:04 | プログラミング
今日プログラムをしていたら得体の知れない違和感があったんですよ。違和感が押し寄せてくるのに原因が分からないんですよ。

で、一息ついてコミットしようとしたら……あれがない!



どうでしょう?見慣れたはずの がないんですよ。何か今見れば見る程とぼけた顔に見えてきますよ。大泉洋に似てますよ。洋ちゃんいないんですよ。

と伏線を回収したところで……。

Git関連のコマンドも受け付けてくれないんですよ。昨日までできてたのに。

新しい機能変更かもしれないとChatGPTではなくBingに相談したんですよ。もちろんググりもしましたよ。5時間くらいBingとGoogleとVS Code行ったり来たりですよ。でも解決策が一向に出てこないんですよ。お陰でsetting.jsonがいい感じに整理できましたよ(^^)

ここでふと、英語で質問すれば回答が得られるんじゃないかと思いついたわけですよ。5時間もかかるなよと。アホかと。

アクティビティバーの洋ちゃんの名前が「SCM(Source Control Management)」ということをググって調べて、私が持てる最大限の英語力を以てBingに「My VS Code's activity bar lost SCM icon. What is repair it?」って聞きましたよ。

答えは日本語ですよ。ここで1落胆ですよ。

答えは単純に「コマンドパレットで『workbench.action.resetViewLocations』と入力し、Enterを押す」だけですよ、たったこれだけですよ。2落胆ですよ。

まじかよーとコマンドコピペしたら直りましたよ!やっと直って嬉しいんだか時間無駄にして悲しいんだか複雑な思いで最終落胆ですよ。

ちなみにソース管理機能は上の方の「エクスプローラー」に統合されていて、「git config --global なんちゃら」し直したら正常には動作していました……けど何が起こったのかさっぱり分かりません。

皆さん!アクティビティバーのアイコンが消えたら、慌てず騒がず「コマンドパレットで『workbench.action.resetViewLocations』と入力し、Enterを押す」ですよ。Gitが使えなくなっていたら慌てず騒がず「git config --global なんちゃら」し直せばいいんですよ。

今日は落胆しすぎたので頭使うのやめてYouTubeで夜行バスの旅見て寝ます。お休み!

--------
tsutaya0225あっとgmail.com


30年ぶりのC言語に苦労していたらPythonに行き着いた件

2023-07-26 13:14:46 | プログラミング
マルチプラットフォーム開発を最初に念頭に置いたのは単に、WindowsとAndroidで同じ事がしたいからだったんだけど、30年振りのC言語のリスキリングは結構ハード!

今まではスクリプト言語でやり過ごしてたんでExcelVBAとVBScriptはお手のものなんだけど、ライブラリが無いから実装は全て手作業。

で、C#の勉強に疲れてちょっとだけPythonを勉強しようとしてみたら、何かVBScriptをオブジェクト指向型にしたようなイメージでスラスラ頭に入ってくるのね。

しかも今まで苦労して手動で実装してた部分がライブラリで用意されてて、何の苦労も無しに実装できるとか、これ何てチート?

現代のプログラミングはクラスメソッド全部覚えるとか無理なんで、だいたい検索したりエディタやIDEの補完機能やAIツールを使ったりだろうから、どんな機能が用意されてるか大枠で覚えておけばいいし。

ってことでPythonの使い方は数時間で覚えてしまったよ。ライブラリ群もだいたい把握したし、使うだけならもう十分使えるようになったわ。

もちろん記述は自己流なんで、仕事で使うにはこれからお作法を覚えたり使えるライブラリを増やしていったりと、まだまだ覚えていかなきゃならない事は多いけどね。

こんなことができたのは、VBScriptを十分使い込んでて、オブジェクト指向を十分理解していたからこその芸当だと思うんで万人向けではないんだけど、俺と同じようにスクリプトで苦労していてオブジェクト指向を理解している人には是非Pythonを触って欲しいと思った次第。

同様に、Java覚えた人はC#も勉強してみると強みが増えると思う。大体構文同じだし、ネイティブコード吐くし、XamarinやBlazor、macならXcode使えばクロスプラットフォーム対応もできるしね。

さて、PythonをAndroidで生かす方法を考えなきゃ……。

--------
tsutaya0225あっとgmail.com


クロスプラットフォーム開発その5

2023-07-19 15:31:55 | プログラミング
突然だがJSON形式が好きではない。

いきなりナタで襲ってき……プログラムでも使いやすく人間からも可読性が高いという触れ込みだが、カッコの位置が独特で、どうも頭の中で構造化できない。
歳のせいもあるんだろうけど、正直あれ可読性高いか?

ここでC#に絡んでYAML形式が出てくる。
インデントで構造化データを表現する……インデントで表現……Pythonと同じ思想じゃん。

PythonではJSONを使うことが多いけど、使いやすいのはライブラリのお陰じゃね?
むしろYAMLとの親和性が高くね?

そもそもJSONは「JavaScript Object Notation」なんだからJavaScriptに任せておいて、PythonはYAMLを使うべきだ!と弱く言いたい。
強く言えないのは私がライブラリ作った訳じゃないから。←当然のように既にある。

これで自分の中でFlutterよりもC#を利用する意味が俄然出てきたよ。
Google HomeスクリプトもYAMLだから覚えておくに越したことないしね。

--------
tsutaya0225あっとgmail.com