将数据插入pyqt Qtablewidget

时间:2012-07-30 16:09:46

标签: python pyqt

我将mysql数据插入pyqt Qtablewidget但是当我将数据传递给一个变量文件时,数据只打印到表格中的一个单元格。有什么建议吗?

我的代码:

import sys
import MySQLdb as mdb
from PyQt4.QtGui import *
db = mdb.connect('server','user','password','db')

model = db.cursor()
model.execute("""SELECT ip
                    FROM table""")
rows_pong = (model.fetchall())
data = "\n".join(item[0] for item in rows_pong)
print data

lista = [data]
listb = ['ba', 'bb', 'bc']
mystruct = {'A':lista, 'B':listb}

class MyTable(QTableWidget):
    def __init__(self, thestruct, *args): 
        QTableWidget.__init__(self, *args)
        self.data = thestruct
        self.setHorizontalHeaderLabels(['IP Address', 'Username'])
        self.setmydata()

    def setmydata(self):
        for n, key in enumerate(self.data):
            for m, item in enumerate(self.data[key]):
                newitem = QTableWidgetItem(item)
                self.setItem(m, n, newitem)

def main(args):
    app = QApplication(args)
    table = MyTable(mystruct, 100, 3)
    table.show()
    sys.exit(app.exec_())

if __name__=="__main__":
    main(sys.argv)

示例数据(变量中的项目):

10.10.0.171:139

10.10.0.171:139

127.0.0.1:3306

127.0.0.1:20128

127.0.0.1:20129

127.0.0.1:20130

127.0.0.1:20130

127.0.0.1:20131

127.0.0.1:20131

127.0.0.1:61335

127.0.0.1:61561

127.0.0.1:61562

127.0.0.1:61942

127.0.0.1:61943

127.0.0.1:62291

127.0.0.1:62292

127.0.0.1:63093

127.0.0.1:63094

1 个答案:

答案 0 :(得分:0)

它正如我所期望的那样工作。不确定是否有意,但lista由一个项组成,因为您将查询结果加入到单个字符串中。如果您希望每个IP都显示在新行中,请尝试将data = "\n".join(item[0] for item in rows_pong)替换为data = [item[0] for item in rows_pong]并将lista = [data]更改为lista = data