0

mysql データを pyqt Qtablewidget に挿入していますが、データを 1 つの変数に渡すと、データはテーブルの 1 つのセルにのみ出力されます。助言がありますか?

私のコード:

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
4

1 に答える 1

0

それは私にとって期待どおりに機能しています。意図したものかどうかはわかりませんlistaが、クエリの結果を単一の文字列に結合しているため、1 つのアイテムで構成されています。各 IP を新しい行に表示する場合は 、 をに置き換えdata = "\n".join(item[0] for item in rows_pong)data = [item[0] for item in rows_pong]から に変更lista = [data]してみてください。lista = data

于 2012-07-31T08:16:58.773 に答える