昨日、これと同様の質問を投稿したところ、dschulz が親切に回答し、オンライン記事をいくつか紹介してくれました。残念ながら、どちらのサンプル コードも C++ で書かれているのに対し、私は Python を使用しているため (必要な調整はうまく行ったと思いますが)、サンプルが私にとって十分に完成していないか、コードが単に動作していません。私はプログラミングに慣れていないので、作成中のこのソフトウェアの作業は非常にゆっくりと進んでいます。
さまざまな空間分析を実行するプラグインを Quantum GIS で作成しました。プラグインをクリックすると、4 つの個別の分析に関連する 4 つのタブを備えた GUI が開きます。あるタブで、Postgres にあるテーブルに対するクエリの結果を表示するテーブル ビューを作成したいと考えています。一度クリックすると、同じタブのいくつかの入力を使用してデータベースを更新するクエリを実行する「計算」ボタンがあります。常に、このテーブルで何が起こっているかを示すこのボタンの横にテーブル ビューがあることを望みます。
QT Designer を使用して GUI を作成しているので、スライダーやチェック ボックスなどのウィジェットをドラッグ アンド ドロップして、変更するとイベントをトリガーできるようにする方法を理解しました。「テーブル ビュー」ウィジェットを見つけましたが、それを postgres データベースのクエリにリンクする方法がわかりません。テーブル ビューは、私が想定している信号の受信機になりますが、テーブル ビューに Postgres クエリを表示しているように見える「スロット」を特定できません。QSqlQueryModel の作成にも問題があります。私がこれまでに持っているのはこれです。
try:
db = QSqlDatabase.addDatabase("QPSQL")
db.setHostName("localhost")
db.setDatabaseName("database")
db.setUserName("postgres")
db.setPassword("password")
db.open()
except:
#This exception does not run so I assume the link to the database worked out.
QMessageBox.information(None, "Cancel", "Cannot Connect to Database to create table view.")
return
try:
model = QSqlQueryModel()
model.setQuery("SELECT name, density, deveff FROM susip." +str(filename)+ "_rezoning")
except:
#Here the exception runs, which tells me that something is wrong with the setQuery function
QMessageBox.information(None, "Cancel", "Cannot connect run query in database to create table view.")
return
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()
「計算」ボタンをクリックしてこれを実行し、model.seta をコメントアウトすると、新しいウィンドウが一瞬点滅して消えます。ただし、これが機能したとしても、GUI に配置したテーブル ビュー ウィジェットにこのテーブル ビューを表示する方法がわかりません。次に、クエリの何が問題なのか、なぜ「try」ステートメントが失敗し、QMessageBox を提供する「except」ステートメントが表示されるのかがわかりません。
私はオンライン文書を無限に検索しましたが、完全に迷子になりました。誰かが私が間違っていることを教えてもらえますか?
どうもありがとう、
ローマン