class AppMain(QtGui.QMainWindow): def __init__(self, parent=None): super(AppMain, self).__init__(parent) self.init_ui() def init_ui(self): self.fullDealInstance = FullDeal() self.settingsDialog = Settings() settings_action = QtGui.QAction(QtGui.QIcon("settings.png"), "&Exit", self) settings_action.triggered.connect(self.settingsDialog.show) self.listWidget = QtGui.QListWidget() self.dealFilter = Filter(self) VBox = QtGui.QVBoxLayout() VBox.setSpacing(5) VBox.setMargin(5) VBox.addWidget(self.dealFilter, 1) VBox.addWidget(self.listWidget, 4) centralWidget = QtGui.QWidget(self) centralWidget.setLayout(VBox) self.setCentralWidget(centralWidget) self.network = Network() self.response = self.network.getData() self.response.finished.connect(self.displayData) self.toolbar = self.addToolBar("ToolBar") self.toolbar.addAction(settings_action) self.dealData = [] self.allDealData = [] self.setGeometry(600, 600, 600, 600) self.setWindowTitle("TravelDeal") self.show() def displayData(self): self.getClearData() self.populateListWidget() def getClearData(self): if not self.dealData: replyByteArray = self.response.readAll() QtCore.QObject.deleteLater(self.response) replyString = str(replyByteArray.data()) removedFirst = replyString[1:] regex = re.compile(r"(?:\')|(\\n)") removed = re.sub(regex, "", removedFirst) hercules = re.compile(r'(\\\\")') clear = re.sub(hercules, "'", removed) replyDict = json.loads(clear) self.dealData = replyDict["deals"] self.allDealData = self.dealData else: return def populateListWidget(self): replyArr = self.dealData for i, entry in enumerate(replyArr): listItem = ListItem(self.fullDealInstance) listItem.set_header(entry["title"]) listItem.set_description(entry["description"]) listWidgetItem = QtGui.QListWidgetItem(self.listWidget) listWidgetItem.setSizeHint(listItem.sizeHint()) self.listWidget.addItem(listWidgetItem) self.listWidget.setItemWidget(listWidgetItem, listItem) def setNewData(self, newData): self.dealData = newData self.listWidget.clear() self.populateListWidget() def resetData(self): self.dealData = self.allDealData self.listWidget.clear() self.populateListWidget()