如何将数据显示到QTableWidget并添加

时间:2017-02-24 15:04:53

标签: python sqlite pyqt

我正在尝试将我的数据库调用到TableWidget中,但它不会

另外,我想添加到特定的列但它也失败了,没有错误显示,代码正常运行,但没有任何反应

这是我的数据库管理员文件

#!/usr/bin/python

import sqlite3


class DatabaseManager(object):
    def __init__(self, database, table):
        self.db = database
        self.table = table

        self.con = sqlite3.connect('students.db')
        self.cursor = self.con.cursor()

        self.cursor.execute('''CREATE TABLE IF NOT EXISTS`degrees` (`s_id` INTEGER PRIMARY KEY AUTOINCREMENT,`name` TEXT NOT NULL,`mid` INTEGER,
        `lec` INTEGER,`res` INTEGER,`term` INTEGER,`final`  INTEGER,`end` INTEGER);''')

        self.con.commit()

    def gettable(self):
        return self.cursor.execute("SELECT * FROM degrees")

    def getcols(self):
        return self.cursor.execute("SHOW COLUMNS FROM degrees")

    def runcmd(self, cmd):
        print("RUNNING CMD" + cmd)
        try:
            msg = self.cursor.fetchall()
        except:
            msg = self.cursor.fetchone()
        return msg

    def addentry(self, message):
        cmd = "INSERT INTO" + self.table + "(name, mid, lec, res, term, final, end)"
        cmd += "VALUES (%s, %s, %s, %s, %s, %s, %s);" %(name, mid, lec, res, term, final, end)
        self.cursor.execute(cmd)

    def __del__(self):
        self.con.commit()
        self.cursor.close()
        self.con.close()

这是我的主文件

#!/usr/bin/python
# encoding: utf-8

import sys
from PyQt4 import QtGui, QtCore
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from Modules.Databases import DatabaseManager


f = open('style.stylesheet', 'r')
styles = f.read()
f.close()


class Tabs(QTabWidget):
    def __init__(self, parent=None):
        super(Tabs, self).__init__(parent)
        self.dbu = DatabaseManager('students.db', 'degrees')
        self.tab1 = QWidget()
        self.tab2 = QWidget()

        self.addTab(self.tab1, "Tab 1")
        self.addTab(self.tab2, "Tab 2")
        self.tab1ui()
        self.tab2ui()

        self.setWindowTitle("نـظـام إدارة بـيـانـات الـطـلاب")
        self.setFixedSize(800, 400)
        self.setStyleSheet(styles)
        self.setWindowIcon(QIcon('icon.png'))

        # self.UpdateTree()

    def tab1ui(self):
        layout = QFormLayout()
        layout.setVerticalSpacing(20)

        h_l = QHBoxLayout()
        h_l.setSpacing(10)
        search_line = QLineEdit()
        search_btn = QPushButton()
        search_btn.setText('Search')
        h_l.addWidget(search_line)
        h_l.addWidget(search_btn)
        layout.addItem(h_l)

        layout.addRow("ID", QTextBrowser())
        layout.addRow("Name", QTextBrowser())
        layout.addRow("Mid-Term", QTextBrowser())
        layout.addRow("Lectures", QTextBrowser())
        layout.addRow("Responding", QTextBrowser())
        layout.addRow("Term - Degrees", QTextBrowser())
        layout.addRow("Final - Exam", QTextBrowser())
        layout.addRow("End - Degrees", QTextBrowser())
        self.setTabText(0, "Data View")
        self.tab1.setLayout(layout)

    def tab2ui(self):
        layout = QFormLayout()

        d_view = QTableWidget()

        id1 = QLineEdit()
        name = QLineEdit()
        term = QLineEdit()
        mid = QLineEdit()
        lec = QLineEdit()
        final = QLineEdit()
        end = QLineEdit()

        add_btn = QPushButton()
        add_btn.setText("Add New")
        add_btn.setFixedSize(100, 50)
        edit_btn = QPushButton()
        edit_btn.setText("Edit Current")
        edit_btn.setFixedSize(100, 50)
        del_btn = QPushButton()
        del_btn.setText("Delete Current")
        del_btn.setFixedSize(100, 50)

        end_less = QLineEdit()
        end_greater = QLineEdit()
        term_less = QLineEdit()
        term_greater = QLineEdit()
        update_btn = QPushButton()
        update_btn.setText("Filter")
        update_btn.setFixedSize(50, 30)

        h_l = QHBoxLayout()
        h_l.setSpacing(10)
        h_l.addWidget(QLabel('ID'))
        h_l.addWidget(id1)
        h_l.addWidget(QLabel('Name'))
        h_l.addWidget(name)
        h_l.addWidget(QLabel('Term - Degrees'))
        h_l.addWidget(term)

        h_l_2 = QHBoxLayout()
        h_l_2.setSpacing(10)
        h_l_2.addWidget(QLabel('Mid - Term'))
        h_l_2.addWidget(mid)
        h_l_2.addWidget(QLabel('Lectures'))
        h_l_2.addWidget(lec)
        h_l_2.addWidget(QLabel('Final'))
        h_l_2.addWidget(final)
        h_l_2.addWidget(QLabel("End - Degrees"))
        h_l_2.addWidget(end)

        h_l_3 = QHBoxLayout()
        h_l_3.setSpacing(10)
        h_l_3.addStretch()
        h_l_3.addWidget(add_btn)
        h_l_3.addWidget(edit_btn)
        h_l_3.addWidget(del_btn)
        h_l_3.addStretch()

        h_l_4 = QHBoxLayout()
        h_l_4.setSpacing(10)
        h_l_4.addWidget(QLabel('Term <'))
        h_l_4.addWidget(term_less)
        h_l_4.addWidget(QLabel('Term >'))
        h_l_4.addWidget(term_greater)
        h_l_4.addWidget(QLabel('End <'))
        h_l_4.addWidget(end_less)
        h_l_4.addWidget(QLabel('End >'))
        h_l_4.addWidget(end_greater)
        h_l_4.addWidget(update_btn)

        layout.addWidget(d_view)
        layout.addItem(h_l)
        layout.addItem(h_l_2)
        layout.addItem(h_l_3)
        layout.addItem(h_l_4)

        self.setTabText(1, "Data Edit")
        self.tab2.setLayout(layout)
        return name

    @QtCore.pyqtSignature("on_add_btn_clicked()")
    def add(self):
        name = self.tab2.name
        self.dbu.addentry(name)
        self.UpdateTree()

    def updatetree(self):
        col = self.dbu.getcols()
        table = self.dbu.gettable()

        for c in range(len(col)):
            self.d_view.headerItem().setText(c, col)

        self.d_view.clear()

        for item in range(len(table)):
            QTreeWidgetItem(self.d_view)
            for value in range(len(table[item])):
                self.d_view.topLeevelItem(item)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Tabs()
    ex.show()
    sys.exit(app.exec_())

我不知道那个bug在哪里,或者我的代码丢失了,所以像往常一样,我来找你寻求帮助

0 个答案:

没有答案