2014-04-09 5 views
0

나는 테이블의 행을 클릭하면 해당 행의 값을 인쇄 할 때 데이터베이스의 기존 데이터에있는 해당 ID를 표시하기 위해 mysql 데이터베이스에서 테이블에 데이터를 표시합니다. . 나는 그것을 어떻게 그렇게 만들까요?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() 

를이 경우, 0item 호출에서 1은 0 인덱스 배열에, 당신의 열입니다. 숨겨진 열은 계속 계산됩니다. 제가 예를 들어, 결과를 인쇄 바로 클릭 할 때 원하는

자동으로이 작업을 수행하려면 행을 클릭하면, 당신은 내가 소스 코드를 삽입하는 방법을 이해하지 않는 신호 itemClicked

+0

를 사용하는 것이 좋습니다 데이터베이스의 데이터 ID – Bekti

+0

의 결과 당신은 어떤 부분을 수행하는 방법을 알고 있습니까? – Andy

+0

죄송합니다, 이해가 안 돼요 – Bekti