6

いくつかの本格的な GUI ベースのアプリケーションのプログラミングに取り掛かりたいのですが、Java からの Swing/SWT のようなものを見ると、「ウィジェット」オブジェクトを作成してそれらにデータを入力し、メソッドを呼び出すことによって、GUI インターフェースをプログラミングするのが嫌いではありません。彼ら。

インターフェイスのデザインがコードの残りの部分と密結合しないように、GUI のデザインは別のテキストベースのファイルで読み取り、レンダリング (HTML など) する必要があると思います。

私はHTMLayoutを見たことがありますが、そのアイデアは気に入っていますが、これまでのところ C++ だけのようです。

マークアップ ベースの GUI を実行するための Python ライブラリ (または WIP プロジェクト) を探しています。

アップデート

私が QT の xml を受け入れられない理由は、プログラムによるアプローチが嫌いな理由と同じです。各ウィジェットを個別に組み立て、その各プロパティを個別の行で指定します。プログラムによる方法よりも利点はありません。

4

7 に答える 7

7

Mozilla の XUL を試すことができます。XPCOM 経由で Python をサポートします。

このプロジェクトを参照してください: pyxpcomext

XUL はコンパイルされず、実行時にパッケージ化されてロードされます。Firefox や他の多くの優れたアプリケーションで使用されていますが、ほとんどのアプリケーションでは Python ではなく Javascript がスクリプトに使用されています。ただし、Python を使用しているものは 1 つまたは 2 つあります。

于 2009-04-20T14:18:21.090 に答える
2

アプリケーション開発にTclやPython、Tkなどの言語を選択した場合、インターフェイスを記述するための独自のDSLを作成するのはかなり簡単になります。たとえば、次のようなメニューを作成できるDSLを作成できます。

menubar {
    File => {
        Open => cmd.open
        Save => cmd.save
        Exit => cmd.exit
    }
    Edit => {
        Cut => cmd.cut
        Copy => cmd.copy
        Paste => cmd.paste
    }
}

...そして次のようなメインのGUIフォーム:

form PropertiesForm {
          Font: [fontchooser]
    Foreground: [foregroundChooser]
    Background: [backgroundChooser]
}
form NewUserForm {
    username [_____________________]
    [] administrator
    enable the following features:
    () feature 1
    () feature 2
    () feature 3
}
notebook {
   Properties => PropertiesForm
   New User => NewUserForm
}

... 等々。Tclは、このようなDSLを作成できる点で非常に優れています。この機能はTcl自体には組み込まれていませんが、この言語によってDSLは簡単になります。この種のもののいくつかはTclerのwikiに存在します。たとえば、MenusMadeEasyで説明したものと同様のメニューを作成するためのコードがあります

ただし、しばらくすると、この方法でプロ仕様のUIを作成するのは非常に難しいと思います。

于 2009-04-20T15:26:43.623 に答える
2

wxPythonはどうですか?作業を始めたばかりですが、GUIをアセンブルしてXMLファイルに書き込むことができるツール(XRC Resource Editor)があります。私が理解しているように、Pythonアプリケーションは、多数のGUIレイアウトコードをPythonコードと混合するのではなく、XMLファイルをロードします。

于 2008-12-12T22:36:16.977 に答える
2

優れた PyQt インターフェイスを使用して Python から使用できる Qt を調べる必要があります (なぜ彼らは QtPy と名前を付けなかったのですか? --- キューティピー、わかりますか? --- 私には理解できません)。

Qt を使用すると、GUI をプログラムで構築する (これは望ましくありません) か、XML マークアップを使用するかを選択できます。この XML ファイルは、事前にコードにコンパイルするか、短いコマンドでロードすることができます。後者は、PyQt を使用して作業する通常の方法です。

Qt は用途が広く、高品質で、クロスプラットフォームであり、知らないうちに既に使用している可能性があります。私の記憶が正しければ、公式の Skype クライアント アプリケーションは Qt で書かれています。

編集:いくつかのリンクを追加するだけで、OPがそれを感じ取ることができます...

于 2008-12-12T22:15:19.170 に答える
1

GTKを使用する場合は、XMLファイルであるGladeを使用できます。

于 2008-12-12T22:38:32.040 に答える
-1

Python ではなく XML ですが、Open Laszloを見てください。

于 2008-12-12T22:14:46.223 に答える
-2

ウィンドウズ?

Visual Studio で WinForms エディタを使用してから、IronPython からアセンブリに話しかけることができます。

于 2008-12-12T22:23:33.087 に答える