2016-04-30 15 views
0

単純なdictからデータを読み込むd = {key:[desc、dateadded]} 目標は、テーブルビューにデータを追加し、日付順に並べ替えることです。メインウィンドウにテーブルを置くときに追加するデータを取得できません。テーブルビューのアイテムを動的に追加して並べ替える

問題は、メインウィンドウにテーブルを配置する方法にあります。私はテーブルを備えた作業ウィジェットを持っており、2つのファイルを結合しようとしています。現在、アプリケーションがクラッシュします。あなたはコードを書いてほしくはありませんが、正しい方向に軽く振ると大きな助けになります。

# -*- coding: utf-8 -*- 

# Form implementation generated from reading ui file 'display.ui' 
# 
# Created by: PyQt4 UI code generator 4.11.4 
# 
# WARNING! All changes made in this file will be lost! 
from PyQt4.QtGui import (QMainWindow, QApplication) 
from PyQt4 import QtCore, QtGui 
from PyQt4.QtCore import * 
from PyQt4.QtGui import * 
import sys 
try: 
    _fromUtf8 = QtCore.QString.fromUtf8 
except AttributeError: 
    def _fromUtf8(s): 
     return s 

try: 
    _encoding = QtGui.QApplication.UnicodeUTF8 
    def _translate(context, text, disambig): 
     return QtGui.QApplication.translate(context, text, disambig, _encoding) 
except AttributeError: 
    def _translate(context, text, disambig): 
     return QtGui.QApplication.translate(context, text, disambig) 

class Ui_MainWindow(object): 
    def __init__(self): 
     #app = QApplication(sys.argv) 
     self.window = QMainWindow() 
     self.setupUi(self.window) 
     self.window.show() 
     self.setmydata() 
    def setupUi(self, MainWindow): 
     MainWindow.setObjectName(_fromUtf8("MainWindow")) 
     MainWindow.resize(296, 478) 
     MainWindow.setIconSize(QtCore.QSize(0, 0)) 
     MainWindow.setAnimated(False) 
     MainWindow.setTabShape(QtGui.QTabWidget.Rounded) 

     self.centralwidget = QtGui.QWidget(MainWindow) 
     self.centralwidget.setObjectName(_fromUtf8("centralwidget")) 
     self.tableView = QtGui.QTableView(self.centralwidget) 
     self.tableView.setGeometry(QtCore.QRect(20, 50, 261, 391)) 
     sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) 
     sizePolicy.setHorizontalStretch(0) 
     sizePolicy.setVerticalStretch(0) 
     sizePolicy.setHeightForWidth(self.tableView.sizePolicy().hasHeightForWidth()) 
     self.tableView.setSizePolicy(sizePolicy) 
     self.tableView.setEditTriggers(QtGui.QAbstractItemView.AllEditTriggers) 
     self.tableView.setDragEnabled(True) 
     self.tableView.setAlternatingRowColors(True) 
     self.tableView.setSelectionMode(QtGui.QAbstractItemView.MultiSelection) 
     self.tableView.setSortingEnabled(False) 
     self.tableView.setObjectName(_fromUtf8("tableView")) 
     self.pushButton = QtGui.QPushButton(self.centralwidget) 
     self.pushButton.setGeometry(QtCore.QRect(20, 10, 121, 31)) 
     self.pushButton.setObjectName(_fromUtf8("pushButton")) 
     self.pushButton_2 = QtGui.QPushButton(self.centralwidget) 
     self.pushButton_2.setGeometry(QtCore.QRect(160, 10, 121, 31)) 
     self.pushButton_2.setObjectName(_fromUtf8("pushButton_2")) 
     MainWindow.setCentralWidget(self.centralwidget) 
     self.menubar = QtGui.QMenuBar(MainWindow) 
     self.menubar.setGeometry(QtCore.QRect(0, 0, 296, 21)) 
     self.menubar.setObjectName(_fromUtf8("menubar")) 
     MainWindow.setMenuBar(self.menubar) 
     self.statusbar = QtGui.QStatusBar(MainWindow) 
     self.statusbar.setObjectName(_fromUtf8("statusbar")) 
     MainWindow.setStatusBar(self.statusbar) 

     self.retranslateUi(MainWindow) 
     QtCore.QMetaObject.connectSlotsByName(MainWindow) 

    def setmydata(self): 
     d={"12345678":["do some stuff here that needs to be in a large cell to wrap text","1"],"12343378":["do stuff","1"]} 


     self.data = {} 

     keys=d.keys() 
     self.data['col1']=keys 
     self.data['col2']=[] 
     for key in keys: 
       self.data['col2'].append(d[key][0]) 
     horHeaders = [] 

     for n, key in enumerate(sorted(self.data.keys())): 
      horHeaders.append(key) 
      for m, item in enumerate(self.data[key]): 
       newitem = QTableWidgetItem(item) 
       self.setItem(m, n, newitem) 
     self.setHorizontalHeaderLabels(horHeaders) 
    def retranslateUi(self, MainWindow): 
     MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None)) 
     self.pushButton.setText(_translate("MainWindow", "Add New", None)) 
     self.pushButton_2.setText(_translate("MainWindow", "Save", None)) 

app = QApplication(sys.argv) 
frame = Ui_MainWindow() 
#frame.show() 
app.exec_() 

答えて

0

は、コードを掘り後、私は見るのではなくQTableWidgetするために必要なライン

self.tableView = QtGui.QTableView(self.centralwidget) 

を見つけました。これにより、値などを設定することができます。

関連する問題