반응형
<질문>
mysql 데이터베이스에 데이터가 있고 pyqt를 사용하여 테이블에 표시하고 싶습니다. 이것은 데이터베이스의 쿼리입니다 (SELECT * FROM MONITORING). 테이블 위젯 내부에 데이터베이스의 내용을 표시하는 데 도움이됩니다.
내 프로그램의 소스 코드는 다음과 같습니다.
from PyQt4 import QtCore, QtGui
import sys
import MySQLdb
from form.DBConnection import Connection
import MySQLdb as mdb
db = Connection()
myCursor = db.name().cursor()
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_efncoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
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(5)
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)
item = QtGui.QTableWidgetItem()
self.tbl_anggota.setHorizontalHeaderItem(3, item)
item = QtGui.QTableWidgetItem()
self.tbl_anggota.setHorizontalHeaderItem(4, item)
self.bt_hapus = QtGui.QPushButton(self.centralwidget)
self.bt_hapus.setGeometry(QtCore.QRect(350, 250, 75, 23))
self.bt_hapus.setObjectName(_fromUtf8("bt_hapus"))
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)
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)
item.setText(_translate("MainWindow", "jabatan", None))
item = self.tbl_anggota.horizontalHeaderItem(3)
item.setText(_translate("MainWindow", "email", None))
item = self.tbl_anggota.horizontalHeaderItem(4)
item.setText(_translate("MainWindow", "nohp", None))
self.bt_hapus.setText(_translate("MainWindow", "Hapus", None))
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
MainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
<답변1>
이것이 내가 한 방법입니다.
import sqlite3 as lite
...
cur = self.SQLiteDB.cursor()
cur.execute("SELECT * FROM SQLTable")
allSQLRows= cursor.fetchall()
self.myTableWidget.setRowCount(len(allSQLRows)) ##set number of rows
self.myTableWidget.setColumnCount(8) ##this is fixed for myTableWidget, ensure that both of your tables, sql and qtablewidged have the same number of columns
row = 0
while True:
sqlRow = cur.fetchone()
if sqlRow == None:
break ##stops while loop if there is no more lines in sql table
for col in range(0, 8): ##otherwise add row into tableWidget
self.myTableWidget.setItem(row, col, QtGui.QTableWidgetItem(sqlRow[col]))
row += 1
반응형
'개발 > Python' 카테고리의 다른 글
목록에서 중복 항목을 찾아서 다른 목록을 만들려면 어떻게합니까? (0) | 2020.09.22 |
---|---|
pyQT 및 MySQL 또는 MSSQL 연결 (0) | 2020.09.22 |
emit () 및 pyqtSignal ()의 PyQt 적절한 사용 (0) | 2020.09.22 |
파이썬을 사용하여 실제 사용자 홈 디렉토리를 찾는 방법은 무엇입니까? (0) | 2020.09.19 |