首页 > 解决方案 > 在 PyQt5 中使用 PSQL 表打开新窗口

问题描述

出于某种原因,这段代码不想在 PyQt5 中打开 PSQL 表的新表视图。数据库连接测试成功并且可以正常工作,但是表视图没有打开。请注意,我是 PyQt5 的初学者。有什么建议么?

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtSql import QSqlDatabase, QSqlQueryModel, QSqlQuery
from PyQt5.QtWidgets import QTableView,QApplication
import sys

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(254, 135)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(30, 40, 191, 41))
        self.pushButton.setObjectName("pushButton")
        MainWindow.setCentralWidget(self.centralwidget)


        self.pushButton.clicked.connect(self.loadData)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton.setText(_translate("MainWindow", "PushButton"))

    def loadData(self):
        # connect to postgresql
        db = QSqlDatabase.addDatabase("QPSQL")
        db.setHostName('localhost')
        db.setDatabaseName('my_db')
        db.setPort(5432) # int
        db.setUserName('random_user')
        db.setPassword('random_password')
        db.open()
        # if db.open():
        print("connected")
        # create tableview
        tableView = QTableView()
        # create sqlquery
        query = QSqlQuery(db)
        query.prepare("SELECT * FROM Table1")
        query.exec()
        print('executing query')
        model = QSqlQueryModel()
        model.setQuery(query)
        tableView.setModel(model)
        tableView.show()

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

标签: pythonpyqt5

解决方案


推荐阅读