2012-04-16 22 views
0

私はQuantum GISでPostgresをバックエンドとして、QT Designerを使ってGUIを作成するプラグインを作成しています。私はpsycopg2を使用してデータベース内のスクリプトを実行し、クエリの結果をフェッチしてGUIのラベルの値を設定しています。このものは私のためにうまくいきます。QT Designerを使用してTableViewをPostgresデータベースに作成する

「計算」ボタンをクリックしていくつかのクエリを実行した後で今したいことは、結果のテーブルをプラグインにTableViewとして表示することです。テーブルを見る目的で明示的にウィジェットが存在することは知っていますが、どうやってそれをどうやって行くのかは分かりません。 psycopg2やPySideを使うべきかどうかは分かりません。なぜなら、私がオンラインで見た例のほとんどが後者を使うからです。

誰かがpsycopg2とPySideのどちらを使ってTableViewを作成する必要があるのか​​誰かが分かりますか?次に、私はPostgresでクエリの結果を表示するために、TableViewウィジェットに何が必要なのか疑問に思っています。最後に、コードを設定する方法について誰かが大いに感謝するでしょう。

乾杯、

ローマ

私は先に行ってとPyQtはドキュメント以下しようとしたが、それはCで提供されますよう++と私は場合、私はよく分からないのPythonを使用した唯一の初心者プログラマだしましたコードの構文に必要なすべての修正が加えられました。とにかく、これは私がこれまで持っているものです:私は計算を実行するために、私のGUIのボタンをクリックしたときに起こる

db = QSqlDatabase.addDatabase("database") 
    db.setHostName("localhost") 
    db.setUserName("postgres") 
    db.setPassword("password") 
    #Not sure what to do to set the connection. The C++ documentation says to put "bool ok = db.open();" 

    model = QSqlQueryModel() 
    model.setQuery("SELECT name, density, deveff FROM public." +str(filename)+ "_rezoning ORDER BY gid;") 
    model.setHeaderData(0, Qt.Horizontal, "Name") 
    model.setHeaderData(1, Qt.Horizontal, "Density") 
    model.setHeaderData(2, Qt.Horizontal, "DevEff") 

    view = QTableView() 
    view.setModel(model) 
    view.show() 

何を、小さな空白QGISウィンドウが簡単に点滅し、消えます。少なくとも私はエラーは出ていないが、明らかに完全ではない。問題の一部は、欠落しているデータベースへの接続と、設定方法がわからないことです。もう1つの問題は、GUIのtableViewウィジェットでこれを表示したいのですが、これを指定する方法がわかりません...

これ以上のヒントはありますか?ほんとうにありがとう。

ローマ

答えて

1

あなたはQtのウィジェットとモデルを使用することを計画している場合は、PySide(PyQtは、またはプレーンのQt/C++)が移動するための方法です。

裸のpsycopg2を使用すると、Qtのモデル/ビュークラスを活用するために独自のモデルを実装する必要があります。これは単にQtのやり方ではありません。 PySide(とPyQt)には、サポートされているデータベースに接続するための独自の手段があるため、psycopg2のような純粋なPythonデータベースアダプタは必要ありません。これは、基礎となるlibqt4-sqlライブラリ(C++)とインストールされたプラグイン(QPSQL、QMYSQL、QSQLITEなど)を使用します。データベースへ

  1. 接続:

    は基本的にあなたがする必要があります。

  2. モデルをインスタンス化する(QSqlQueryModel、QSqlTableModelまたはカスタムQAbstractTableModel派生クラス)
  3. そのモデルをビュー(つまりQTableView)にアタッチします。

PySide QtSql DocumentationPyQt documentationをご覧ください。それらはほとんど互換性があり互換性がありますが、一見するとPyQtのドキュメントがより完全に見えることがわかります。

EDIT(エディット後): A QtのGUIアプリケーションを実行するにはイベントループを必要とし、そのはQApplicationインスタンスによって提供されます。あなたのアプリケーションの詳細をさらに調べる前に、最初にいくつかの基本的な概念を理解する時間を取ってください。ここに素敵なGetting Started with PyQt Guideがあります。

+0

大変ありがとうございます。私にはまったく新しいものなので、この文書を読むことにします。再度、感謝します! –

+0

うれしい私はあなたを助けることができます。どういたしまして。 – dschulz

関連する問題