2014-01-12 66 views
2
from PyQt4.QtCore import * 
from PyQt4.QtGui import * 
from PyQt4.QtSql import * 
import sys 
class Test(QMainWindow): 
    def __init__(self): 
     super().__init__() 
     self.create() 
    def create(self): 
     self.db = QSqlDatabase.addDatabase('SQLITE') 
     self.db.setDatabaseName('management.db') 
     self.db.open() 

     self.x() 
     self.layout =QVBoxLayout() 
     self.layout.addWidget(self.table_view) 
     self.widget=QWidget() 
     self.widget.setLayout(self.layout) 
     self.setCentralWidget(self.widget) 

    def x(self): 
     self.model = QSqlTableModel() 
     self.model.setEditStrategy(QSqlTableModel.OnManualSubmit) 
     self.model.setTable("management") 
     self.table_view=QTableView() 
     self.table_view.setModel(self.model) 
     self.table_view.model().select() 
     self.table_view.show() 
ap = QApplication(sys.argv) 
wi = Test() 
wi.show() 
wi.raise_() 
ap.exec_() 

上面的代碼是一個簡單的對象,我打算創建一個窗口來查看我的數據庫的內容。但它產生的只是一個空白的白盒子。謝謝!Python:爲什麼我的數據庫不能顯示在這個窗口中?

數據庫中有數據並由不同的表(enitities)組成。這就是我所能說的。

+2

......這有什麼不好的白盒子?白盒意味着'QTableView' *確實被顯示。關於它是空的事實也許是因爲你的數據庫中沒有數據?如果您不提供有關數據庫的更多信息,我們無法複製。 – Bakuriu

+0

這是我在這裏的第一個問題,對不起! (更新) – user3187956

回答

1

它看起來像你正在使用一個invlaid驅動程序類型。

Qt的文檔爲QSqlDatabase說你想要的其中之一:

The currently available driver types are: 

Driver Type Description 
QDB2   IBM DB2 
QIBASE  Borland InterBase Driver 
QMYSQL  MySQL Driver 
QOCI   Oracle Call Interface Driver 
QODBC  ODBC Driver (includes Microsoft SQL Server) 
QPSQL  PostgreSQL Driver 
QSQLITE  SQLite version 3 or above 
QSQLITE2  SQLite version 2 
QTDS   Sybase Adaptive Server 

所以看起來你需要嘗試:

self.db = QSqlDatabase.addDatabase('QSQLITE') 
相關問題