全6件 (6件中 1-6件目)
1
swift とかでも何度かハマったことがあるが、class A のインスタンスに class Bのインスタンの参照を持ち、かつ、class B のインスタンスにもclass A のインスタンスの参照を持ちたい時、classごとにソースを分けておくと、class の import 時に衝突が起きる。swift では、NotificationCenter を使って回避していたが、Pythonではこんな解決方法もあったよと言う話。programming by ChatGPT# ModuleA.pyclass MyClassA: pass# ModuleB.pyclass MyClassB: pass# 循環参照を避けるために関数内でimportdef some_function(): from ModuleA import MyClassA from ModuleB import MyClassB # MyClassAやMyClassBを使用する処理必要な時にだけ、class をインポートしてあげることができるらしい。こんな解決方法があるよと言うことは分かりつつ、PySide にもNotificationCenterのようなものがあるらしいのでそっちで解決予定。
2023.11.26
コメント(0)

PySide で横レイアウトと縦レイアウトを併用して、いい感じに WidgetをQMainWindow内に表示しようとしたがうまくいかなかった話。たタブ画面にQLabelとQLineEditを横に慣れて、かつそれを複数行に跨りたかったが、そもそも全く画面上に何も表示されなかった。解決方法だけ書くと、親Widgetを1つ作り、そいつをまず setCentralWidget でQMainWindowに追加し、その親WidgetにQHBoxLayoutを追加していく形で解決できた。↓のソースコードは中途半端だけど、一旦最低限やりたいことはできるようになったバージョン。class RequestTabContents(QMainWindow):# コンストラクタdef __init__(self): super().__init__() mainWidget = QWidget() # 縦方向のレイアウトを作成 vlayout = QVBoxLayout(mainWidget) # mainWidgetを中央に配置 self.setCentralWidget(mainWidget) ← これをやっていないことが原因だった self.layout = vlayout # mainWidgetにサブWidgetを追加していく # 1行目のレイアウトを作成 hlayout1 = QHBoxLayout() # URLの見出しとURLの表示 lblURL = QLabel('URL:') self.leURL = QLineEdit() hlayout1.addWidget(lblURL) hlayout1.addWidget(self.leURL) # 1行目のレイアウトを作成 hlayout2 = QHBoxLayout() # headerの見出しの表示 lblHeader = QLabel('Header:') self.leHeaders = QLineEdit() hlayout2.addWidget(lblHeader) hlayout2.addWidget(self.leHeaders) # vlayout に横レイアウトを追加していく vlayout.addLayout(hlayout1,2) vlayout.addLayout(hlayout2,8)た・だ・し、本来であれば leHeader をもっと幅広に表示したいのだが、1行分の高さしか持てていない。解決次第、当ブログ修正予定。ハマり時間 3hくらい(いまのところ)。
2023.11.25
コメント(0)
訳あって、Python でWebブラウザを作り始めた。最初にChatGPTに問いかけたときに PyQt5 で書かれたコードが吐き出されたので、それをコピペしつつ必要なライブラリをインストールした。が、開発過程でいろんなWebサイトを参照していたところ PySide2やら6 やら PyQt6 などなどが登場して一旦頭がショートした。一度は併存を考えたが、先々のことを考えるとあまり好都合では無さそうなので、スパッとPySide6 だけを使うことにした。pip コマンドでインストールしたライブラリは以下の通り。pip install pyside6とりあえず、超ミニマムな機能を持つブラウザが完成したので、やっとやりたいことに着手できる。ついでに、混乱過程でインストールしたさまざまなライブラリをアンインストールも実施。あーすっきりした。なお、ChatGPT にPyQt と PySide の違いを問いかけた時の回答は以下の通り。PyQtとPySideは、どちらもQtライブラリのPythonバインディングです。使用の好みによりますが、PyQtはGPLまたは商用ライセンスがあり、PySideはオープンソースでLGPLライセンスです。使いやすさは主観的な要素が強く、両方とも十分な機能を提供しています。個人的な好みやプロジェクトの要件に基づいて選択することが重要です。どっちでも同じようなことはできるのでお好みでどうぞ、と。
2023.11.24
コメント(0)

今回も約1日かけてmacOSのバージョンアップとXcodeのバージョンアップ終了。んで肝心のPythonのバージョンは?というと、、、Python 3.7.3 (default, May 11 2019, 16:05:57) [Clang 10.0.0 (clang-1000.11.45.5)] on darwinType "help", "copyright", "credits" or "license" for more information.変わってないんかーい。Pythonの公式サイトを見るとこんな文章があったので、とりあえずこちらをどうにかすることを諦めてPython3.12 をダウンロードすることに。Apple が提供している Python のビルドは /System/Library/Frameworks/Python.framework と /usr/bin/python にそれぞれインストールされています。これらは Apple が管理しているものであり Apple やサードパーティのソフトウェアが使用するので、編集したり削除したりしてはいけません。 インストール完了。Python Launcher なるものがインストールされた。こいつにスクリプトをドラッグすると、自分が選択した Python でスクリプトを実行してくれるらしい。macOSのバージョンアップもXcodeのバージョンアップも要らなかった。。。まあ、1年に1回くらいのイベントということで。https://www.python.org
2023.11.23
コメント(0)

XCode 15 のインストール要件が macOS13.5以上(だったかな?)だったので、まずOSのバージョンアップから開始。もともとがmacOS 12だったので2世代バージョンアップ。最近、まったくmacに触ってなかったので、1世代スキップしてしまったらしい。そして、なんか macOS14 の挙動に慣れない。デスクトップクリックすると全ウィンドウがデスクトップ外に飛んでいく。キモいので速攻で設定変更。設定>デスクトップとDockから「デスクトップとステージマネージャー」にたどりつく。壁紙をクリックしてデスクトップを表示を「常に」から「ステージマネージャ使用時のみ」に変更。ステージマネージャーってなんだって思って、一回設定をオンにしてみたが、キモかったので速攻OFF。設定がiOS寄りになっているのもなんか違和感がすごかった。まあ、数年前からOSのインターフェースの統合の話は言われてたけどグッと近づいてきたなって感じ。そして、地味に最近Macを使ってなさすぎて、文字入力を切り替えする時に間違えてCommandボタン+escボタンあたりを押してしまうのが悔しい。
2023.11.23
コメント(0)
最近、職場のVDIでPythonが使えるようになったので一気にPython熱が加熱。自宅のMacBookでもPythonが使えるように、しようということでちょっと動き出した。とは言っても、数年前に一度インストールしたことはあり、今般、改めて学習するに当たって最新版にアップデートしようかなということで、準備を開始。現在のバージョンPython 3.7.3 (default, May 11 2019, 16:05:57) [Clang 10.0.0 (clang-1000.11.45.5)] on darwinType "help", "copyright", "credits" or "license" for more information.バージョンアップ実行!brew upgrade pythonインストール後Python 3.7.3 (default, May 11 2019, 16:05:57) [Clang 10.0.0 (clang-1000.11.45.5)] on darwinType "help", "copyright", "credits" or "license" for more information.相変わらず3.7.3どうやら3.7.3 はXCodeのバージョンに引きずられている模様。$ python3.11 と明示的にバージョンを指定して起動すると、Python3.11が起動する。Python 3.11.6 (main, Nov 2 2023, 04:51:19) [Clang 14.0.0 (clang-1400.0.29.202)] on darwinType "help", "copyright", "credits" or "license" for more information. なんかキモい。とりあえず、XCodeをバージョンアップすることにした。最新の Python を Mac にインストールする方法
2023.11.17
コメント(0)
全6件 (6件中 1-6件目)
1

![]()
