2017-06-18 7 views
0

私はposgtresqlの統合でPYQT5でデスクトップアプリケーションを開発します。qtablewidgetのヌル値

looks like on screen

ソースコード:

def createTable(self): 
    self.tableWidget = QTableWidget() 

    conn = psycopg2.connect('host=localhost port=5432 dbname=postgres user=postgres password=12345678') 

    cursor = conn.cursor() 
    query = cursor.execute("SELECT * FROM wave_params") 
    result = cursor.fetchall() 
    for i in result: 
     print(i) 

    rows = len(result) 
    columns = len(result[0]) 
    self.tableWidget.setColumnCount(columns) 
    self.tableWidget.setRowCount(rows) 

    index = 0 
    while query != None: 
     self.tableWidget.setItem(index,0, QTableWidgetItem(query.result[0])) 
     # self.tableWidget.setItem(index, 1, QTableWidgetItem(str(query.value(1)))) 
     # self.tableWidget.setItem(index, 2, QTableWidgetItem(str(query.value(2)))) 
     index = index + 1 



    # table selection change 
    self.tableWidget.doubleClicked.connect(self.on_click) 

@pyqtSlot() 
def on_click(self): 
    print("\n") 
    for currentQTableWidgetItem in self.tableWidget.selectedItems(): 
     print(currentQTableWidgetItem.row(), currentQTableWidgetItem.column(), currentQTableWidgetItem.text()) 

私は理解できない私は、テーブルに値が表示されないという事態つまずきました。何が問題ですか? ありがとう!

+0

[QTableWidgetItem](https://doc.qt.io/qt-5/qtablewidgetitem.html#public-functions):あなただけの2例ここでは、その結果をループする必要があります。 – ekhumoro

答えて

0

カーソルオブジェクトには属性の結果がありません。コード結果の は、戻り値がcursor.fetchall()で、クエリが戻り値がcursor.execute()であるタプルのリストです。 cursor.execute()は常になしを返します (documentationを参照)。

def createTable(self): 
    self.tableWidget = QTableWidget(self) 

    psycopg2.connect('host=localhost port=5432 dbname=postgres user=postgres password=12345678') 

    cursor = conn.cursor() 
    query = cursor.execute("SELECT * FROM ladestelle") 
    result = cursor.fetchall() 

    rows = len(result) 
    columns = len(result[0]) 
    self.tableWidget.setColumnCount(columns) 
    self.tableWidget.setRowCount(rows) 

    for i, r in enumerate(result): 
     self.tableWidget.setItem(i, 0, QTableWidgetItem(r[0])) 
     self.tableWidget.setItem(i, 1, QTableWidgetItem(str(r[1]))) 
     self.tableWidget.setItem(i, 2, QTableWidgetItem(str(r[2]))) 
    ''' 
    # or simpler 
    for r in range(rows): 
     for c in range(columns): 
      self.tableWidget.setItem(r, c, QTableWidgetItem(str(result[r][c]))) 
    ''' 

    self.tableWidget.doubleClicked.connect(self.on_click)