2014-04-09 51 views
0

我在mysql數據庫的表中顯示數據, 之後我希望當表中的行被點擊時它會打印行中的值,即在打印id中存在數據庫中的數據。我如何使它成爲那樣?如何使用pyqt獲取表中的選定項目?

這裏的源代碼:

from PyQt4 import QtCore, QtGui 
import sys 
import MySQLdb 
from form.DBConnection import Connection 
import MySQLdb as mdb 
db = Connection() 
myCursor = db.name().cursor() 

」 ................................. ............... .................................. ......」

class Ui_MainWindow(object): 
    def setupUi(self, MainWindow): 
     MainWindow.setObjectName(_fromUtf8("MainWindow")) 
     MainWindow.resize(655, 356) 
     self.centralwidget = QtGui.QWidget(MainWindow) 
     self.centralwidget.setObjectName(_fromUtf8("centralwidget")) 
     self.tbl_anggota = QtGui.QTableWidget(self.centralwidget) 
     self.tbl_anggota.setGeometry(QtCore.QRect(15, 40, 511, 192)) 
     self.tbl_anggota.setObjectName(_fromUtf8("tbl_anggota")) 
     self.tbl_anggota.setColumnCount(3) 
     self.tbl_anggota.setRowCount(0) 
     item = QtGui.QTableWidgetItem() 
     self.tbl_anggota.setHorizontalHeaderItem(0, item) 
     item = QtGui.QTableWidgetItem() 
     self.tbl_anggota.setHorizontalHeaderItem(1, item) 
     item = QtGui.QTableWidgetItem() 
     self.tbl_anggota.setHorizontalHeaderItem(2, item) 
     MainWindow.setCentralWidget(self.centralwidget) 
     self.menubar = QtGui.QMenuBar(MainWindow) 
     self.menubar.setGeometry(QtCore.QRect(0, 0, 655, 21)) 
     self.menubar.setObjectName(_fromUtf8("menubar")) 
     MainWindow.setMenuBar(self.menubar) 
     self.statusbar = QtGui.QStatusBar(MainWindow) 
     self.statusbar.setObjectName(_fromUtf8("statusbar")) 
     MainWindow.setStatusBar(self.statusbar) 
     self.retranslateUi(MainWindow) 
     self.table(MainWindow) 
     QtCore.QMetaObject.connectSlotsByName(MainWindow) 

    def retranslateUi(self, MainWindow): 
     MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None)) 
     item = self.tbl_anggota.horizontalHeaderItem(0) 
     item.setText(_translate("MainWindow", "NIM", None)) 
     item = self.tbl_anggota.horizontalHeaderItem(1) 
     item.setText(_translate("MainWindow", "NAMA", None)) 
     item = self.tbl_anggota.horizontalHeaderItem(2) 

    def table(self, MainWindow): 
     myCursor.execute("SELECT * FROM anggota") 
     jum_baris= myCursor.fetchall() 
     self.tbl_anggota.setRowCount(len(jum_baris)) 
     self.tbl_anggota.setColumnCount(3) 
     for i in range (len(jum_baris)): 
      for j in range (3): 
       item = Qt.QTableWidgetItem('%s' % (jum_baris[i][j + 1])) 
       self.tbl_anggota.setItem(i, j, item) 


if __name__ == "__main__": 
    app = QtGui.QApplication(sys.argv) 
    MainWindow = QtGui.QMainWindow() 
    ui = Ui_MainWindow() 
    ui.setupUi(MainWindow) 
    MainWindow.show() 
    sys.exit(app.exec_()) 

回答

0

這行代碼將選擇current row

r = self.tbl_anggota.currentRow() 

如果你知道你的列(即它不是動態)然後你可以通過這樣拉你的每一個細胞中的值:

field1 = self.tbl_anggota.item(r,0).text() 
field2 = self.tbl_anggota.item(r,1).text() 

在這種情況下,0並在item呼叫1是你的專欄,在0索引數組。請記住,隱藏的列仍然數。

要自動執行此單擊某一行的時候,你要使用的信號itemClicked

+0

我不明白如何把源代碼,我想當立即點擊打印結果,例如數據庫的數據ID的結果 – Bekti

+0

您瞭解如何做哪個部分? – Andy

+0

對不起,我不明白 – Bekti

相關問題