2014-04-24 20 views
1

我已經在python中使用SQL命令創建了一個數據庫文件。我已經使用了很多外鍵,但我不知道如何將這些數據顯示到與Python的QT?有任何想法嗎?我還希望用戶能夠添加/編輯/刪除數據如何將來自數據庫文件的數據顯示到pyqt中,以便用戶可以添加/刪除/編輯數據?

+0

你需要向我們展示一些代碼以幫助你,至少基本形式與所有相關的小部件和網格...或者只是閱讀https://code.activestate.com/recipes/578676-a-phone-book-gui-built-in-wxpython-connected-to-da/?in=user- 4187866我在ActiveState上的食譜之一,但我用那裏wxpython – toufikovich

+0

我還沒有這樣做..我不知道如何,我不知道該怎麼做才能顯示來自數據庫文件的任何信息 - 我是使用pythonQt – Thaz

+0

ok @Thaz ...通過使用qtdesigner設計您的gui開始,它是一個拖放IDE。如果你在windows上搜索它的文件瀏覽器。我也編輯了我的第一條評論,請檢查它。 – toufikovich

回答

3

因爲問題有點廣泛和一般請從http://zetcode.com/gui/pyqt4/開始它會幫助你很多上手。一旦你知道你在處理什麼,你可以使用QtDesigner創建你的用戶表單併爲你的事件添加功能,但是每當你在Qt中編輯表單時要小心,所有你添加的Python代碼將被刪除,所以我建議你遵循您項目的MVC模式。

編輯:這可能是你需要顯示的數據什麼的抽象:considet qttable是你的網格在你的類

def fillQTable(self): 
    #data = [('1','2','3','4'),('5','6','7','8')] #this is from database 
    data = self.getData() 
    rowCount = len(data) 
    colCount = 4 
    self.qttable.setRowCount(rowCount) 
    self.qttable.setColumnCount(colCount) 
    self.qttabke.verticalHeader().setVisible(False) 
    self.qttabke.setHorizontalHeaderLabels(QString("num1;num2;num3;num4").split(";")) 
    self.qttabke.horizontalHeader().setVisible(True) 
    for s in range(colCount): 
     self.qttable.horizontalHeaderItem(s).setTextAlignment(Qt.AlignLeft) 
    for i, row in enumerate(data): 
     for j, col in enumerate(row): 
      item = QTableWidgetItem(col) 
      self.qttabke.setItem(i, j, item) 

def connectionDB(self): 
    try: 
     cnn=pyodbc.connect("DRIVER={Microsoft Access Driver (*.mdb)}\ 
          ;DBQ=Data.mdb") # you can use the db library you like here 
              # i have used pyodbc to connect to MS Access db 
     return cnn 
    except Exception, e: 
     print e 

def getData(self): 
    cnn = self.connectionDB() 
    cursor = cnn.cursor() 
    cursor.execute("select * from DataTable") # DataTable is a table in Data.mdb 
    rawData = cursor.fetchall() 
    cnn.commit() 
    cnn.close() 
    return rawData 
+0

是的,我知道如何做到這一點,我已經做了幾個表單。它只是事實,我不知道如何從數據庫文件導入數據顯示給用戶qt – Thaz

+0

@Thaz我已經更新了答案,請檢查 – toufikovich

+0

是的,我認爲這可能有點有用,但我如何將數據庫連接到python文件,這樣我就不必手動將數據放到列表 – Thaz

1

這個問題有些寬泛,但我會盡量嘗試回答它。 Qt確實帶有一些可以連接到數據庫的模型。具體類如QSqlTableModel。如果將這種模型連接到數據庫並將其設置爲QTableView的模型,它應該會給你所需的大部分行爲。

不幸的是,我不認爲我可以比這更具體。一旦你寫了一些代碼,隨時問一個關於特定問題的新問題(請記住包括示例代碼!)

相關問題