• ベストアンサー

VS 2022 CommunityでPythonで

フォームアプリケーションを作りたいです。と言ってもやはりVBでフォーム作成してPythonで作ったDLLから関数呼び出したほうが楽ですか? TKinterとかしょぼいコントロールしかないし、VBなら慣れてるし、PythonはこれからですがNumpyとかライブラリが充実しているのでPython慣れたいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

> AudacityってwxPythonだったんですね。 いや、wxPythonじゃなくってwxWidgetsね。 wxWidgets: Cross-Platform GUI Library: https://wxwidgets.org/ wxWidgetsってのはC++で書かれてて、何もPython専用じゃない。 つまり、言語によって、wxWidgetsとやり取り出来るモノは全部これが利用出来る。 こういうのを「バインディング」と言って、バインディングさえ提供されていればどの言語処理系からでも使う事が出来る。wxPythonはPython用のwxWidgetsのバインディング。 そしてwxWidgetsを利用出来るプログラミング言語は他にも結構多いです(つまりPythonを離れても利用出来る確率は結構ある)。 もう一つは、wxWidgetsはプラットフォームを選ばない(注)んで、wxWidgetsでコードを書けば基本的にWindows、Linux、Mac OS Xのどれでも動くGUIが作れる。 実の事言うとPythonのTkinterもそういう能力があるんだけど、簡易過ぎるのと、あとはベースになってるTcl/tkのGUIデザインがUNIXのX-WindowとかMotifに引きずられ過ぎて「浮いている」。だから「しょぼい」って事になる。 どっちにせよ、基本「Windowsでしか走らない」GUI付きのVBで書いたアプリケーションより、LinuxやMac OS Xに持っていけるwxWidgetsの方が現代では利点が多いと思う。 他には「もっと豪華なGUIを作りたい」って人にはQt Qt: https://www.qt.io/ja-jp/ と、そのsPython用バインディングにはPySideってのがある。 PySide: https://wiki.qt.io/Qt_for_Python こっちは高機能なんだけど、それもあってちとメンド臭い(笑)。 最初はwxPythonに慣れた方がいいと思う。 注: 実は言い過ぎ(笑)。 と言うのも、PC上のOSはWindows、Linux(UNIX)、Mac OS X(UNIX)と3つがメインで、スマホは主にPCの後者の2つがベースとなってるOS(結果UNIXだ)を使ってるんだけど、一方、実はこれ以外にも(メジャーじゃなくても)まだオペレーティングシステムはあるにはあって、全部カバーしてるのか、と言えばそういう保証はない。 写真: Qtに含まれるGUIビルダ。見た目はWindowsでのVisual hogeに近い。

subarist00
質問者

お礼

追加のご教示ありがとうございます。VC++で作ったdllの関数をVB6から読んだ経験があるので同じことができるのかと思ってい調べてみたら、意外と単純でもない(そもそもインタプリタ言語でコンパイル(笑)って)という事が分かってきて、あらためてどういう順序で何を学習したらいいのか調べなおしていました。 QtはとてもVSチックですね。でもまずはwxWidgets始めてみようと思います。挫折したら気分転換によそへ行って、行ったり来たりうろうろしているうちに戻ってきたらできることもよくあります。 良い道しるべをいただきました。感謝します。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

wxPython: https://wxpython.org wxGlade: https://wxglade.sourceforge.net/ wxWidgets でクロスプラットフォーム GUIアプリを作ろう: http://0xcc.net/pub/uu-2004-08/

subarist00
質問者

お礼

ご回答ありがとうございます。すごい! AudacityってwxPythonだったんですね。 初めて知りました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • pythonでGUIでフォームアプリ作る環境

    VBみたいにマウスクリックやドラッグでフォームやコントロール配置して作れる環境はありませんか? Tkinter使えばコマンド並べてフォームやコントロールを配置させることができる事はわかりますが、すべてのオブジェクトやコントロールをコマンド書いて配置していると、どのコマンドがどのコントロールなのか視覚的にわかりづらくありませんか。

  • フォームの呼び出しについて

    VB.NETで メインのEXEとサブのDLLに分けて作っています。 EXEからDLL内のフォームを表示させようとする場合ですが、 VB.NETではどのように呼ぶべきなのでしょうか? VB6の頃は、EXEからDLL(ActiveX DLL? )のフォームが直接呼べなくて、 EXE側 Dim dll as new DLLClass dll.FormShow() DLLのクラス(DLLClass) Sub FormShow() DllForm.Show みたいに、DLL内のクラスのメソッドをコールし、 その中で、フォームを表示するという手順で呼び出してました。 VB.NETではFormもクラスなので、EXEからDLL(クラスライブラリDLL)内のフォームを 直接呼んでもいいように思うのですが(実際直接呼べる)、 カプセル化というのを考えたときに、フォームを直接呼ぶのではなく、 コントロールするクラスを経由して(VB6のときの方式)呼び出すべきなんじゃないかなと思うのです。 どちらがよいのでしょうか?

  • Pythonで、C言語のモジュールを利用したい!

    初めまして。 どなたか回答いただければ幸いです。 Pythonで利用できるモジュールを、C言語で作成したいと思っているのですが、方法が良くわかりません。 現在、Windowsで、CygwinのGCCを用いて、C言語をコンパイルしています。 GCCでコンパイル→DLLファイル作成→Pythonで利用? という大まかな流れかな~と思いまして、 見よう見まねで、 $gcc -shared test.o -o testmodule.dll というコマンドでDLLファイルを作成して、それをPythonで認識できるフォルダに格納して、Pythonのプロンプトで、 >>>import testmodule(あるいは、import testmodule.dll) とかやったのですが、 ImportError: DLL load failed: 指定されたモジュールが見つかりません。 と言われてしまいました。 鋭意調査中ですが、ご存知の方がおられましたら、 ご教授お願いいたします。

  • sleep関数

    VB内でライブラリ関数のsleep関数を使いたいのですが、どこにあるのでしょうか?"kernel32"というDLLファイルにあると聞いたのですがどうやらない模様です。どなたか知っている方いらっしゃいますでしょうか。お願いします。

  • VB.NET 2010 Express の制限

    VB.NET 2010 の Express 版ではカスタムコントロール作成機能が制限されていますか? 作成できるプロジェクトには、「カスタムコントロール」がなく、クラスライブラリとしてプロジェクトを作ると新しい項目の追加で選べるファイルタイプに、カスタムコントロールが出てきません。 VB.NET 2010 の Express 版で WPFのカスタムコントロールを作成してDLL化する方法はありますか?

  • VC++6.0からVB.NETで作成した関数を呼ぶことができますか?

    VB.NET(Visual Basic 2005 Express Edition)でクラスライブラリ(AAA.dll)を作成し、BBBというModuleにCCCというFunctionをひとつ作成しました。 そのFunctionをVC++6.0で作成したプログラムから呼び出すことは可能でしょうか?また、可能な場合はどのような手順で呼び出すことができるのでしょうか? ■VB6.0でDLLを作成した場合 DLLのファイル名とFunction名さえ指定すればVC++6.0よりLoadLibrary、GetProcAddress関数を使用して呼び出せる。 ■VB.NETでDLLを作成した場合 DLLのファイル名+Module名+Function名という構成になってしまい、従来のLoadLibrary、GetProcAddress関数ではModule名が指定できないように思われるのですが・・・どうなんでしょう。 ご存知の方いらっしゃいましたらご教授お願いいたしますm(_ _)m

  • VBがデバッグ時落ちてしまう

    VC6.0でDLLを作成し、VB6.0で呼び出すプログラムを作成しています。 DLLの内容はWindowハンドルを引数にしてそのハンドルを持つWindow上にListboxを作成するというようなものです。(もともとC言語用のDLLだったものをVBで使いまわしています) このプログラムをデバッグ実行し、デバッガ上で停止[実行->終了]とすると、VB6.exeがアプリケーションエラーで落ちてしまいます。(DLLの関数を呼ばない限り大丈夫です) デバッグ実行でも普通に終了(アプリケーションでの終了)であれば正常に終了してくれます。 このままですと、実行時エラーで止まる度にVB6.exeが落ちてしまい非常に不便です。 このような現象で困った方いませんか? 解決策がありましたら教えてください。

  • VB 2008 DLL作成の方法

    当方Visual Studio 2008のVB、C++で開発をしています。 VS2008のVBでクラスライブラリとして作成し、ビルドをしてDLLを作成したのですが、 対となるLIBファイルがどこにも見当たりませんでした。 VS6.0のVBではLIBファイルも作成されました。 VS2008のVBでLIBファイルを作成する方法をご存知の方いらっしゃいましたら教えてください。 LIBファイルを使用する理由は、VBで作成したDLLをC++に組み込むときにリンクさせる為です。 ※今回はLoadLibrary関数を使わず、LIBファイルを使おうと考えています 以上、宜しくお願い致します。

  • PythonでDLLからの戻り値で文字列の場合を正しく表示させたい

    VisualStudio2005でDLLを作成して、Python2.6のctypesモジュールを使って、PythonからC++のルーチンを呼び出す際に、文字列を引数として、文字列を戻り値として使えるようにC++を記述したいのですがどうすればよいのでしょうか? 関数呼び出しは __stdcallです。 __declspec(dllexport) unsigned char* __stdcall Test(const char *s, int n); とした場合、Pythonで戻り値を見るとint型の数値でした。 from ctypes import * lib = windll.LoadLibrary("test.dll") s = lib.Test("abcdefghijk", 3) print s

  • VB.NETでクラスライブラリプロジェクトがでてこない

    VB.NETスタンダードですが、DLLを作りたいのですが、新しいプロジェクトで「クラスライブラリプロジェクト」がでてきません。どうしてでしょうか? また、VB.NETで普通にDLLを作成するには、やはり「クラスライブラリプロジェクト」を開くしかないのでしょうか?