将“表视图”对象链接到Postgres表

时间:2012-04-17 09:08:03

标签: python pyqt tableview qt-designer

我昨天发布了一个类似的问题,dschulz友好地回应,指导我做了一些在线文章。不幸的是,我仍然在苦苦挣扎,因为任何一个示例代码都在C ++中,而我正在使用Python(虽然我认为我已经设法进行了必要的调整),这些示例对我来说还不够完整,或者代码只是不工作。我是编程的新手,所以我正在制作的这个软件进展非常缓慢。

我在Quantum GIS中创建了一个插件,可以执行各种空间分析。插件一旦点击,就会打开一个GUI,其中包含4个与4个独立分析相关的选项卡。在一个选项卡中,我希望有一个表格视图,显示我在Postgres中的表格上的查询结果。有一个“计算”按钮,一旦点击,运行查询以使用同一选项卡上的某些输入更新数据库。在任何时候,我都希望在此按钮旁边有一个表格视图,显示此表中发生的情况。

我一直在使用QT Designer来制作GUI,因此我已经弄清楚如何拖放滑块和复选框等小部件,这些小部件在更改时可以触发事件。我找到了'table view'小部件,但不知道如何将它链接到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'语句。

我无休止地搜索了在线文档,完全迷失了。有人能告诉我我做错了吗?

万分感谢,

罗马

0 个答案:

没有答案