class Ui_Dialog(object): def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(1112, 826) self.gridLayout = QtWidgets.QGridLayout(Dialog) self.gridLayout.setObjectName("gridLayout") self.label = QtWidgets.QLabel(Dialog) font = QtGui.QFont() font.setPointSize(10) self.label.setFont(font) self.label.setObjectName("label") self.gridLayout.addWidget(self.label, 0, 0, 1, 1) self.lineEditURL = QtWidgets.QLineEdit(Dialog) self.lineEditURL.setObjectName("lineEditURL") self.gridLayout.addWidget(self.lineEditURL, 0, 1, 1, 5) self.pushButtonGo = QtWidgets.QPushButton(Dialog) font = QtGui.QFont() font.setPointSize(10) self.pushButtonGo.setFont(font) self.pushButtonGo.setDefault(True) self.pushButtonGo.setObjectName("pushButtonGo") self.gridLayout.addWidget(self.pushButtonGo, 0, 6, 1, 1) self.pushButtonZoomIn = QtWidgets.QPushButton(Dialog) self.pushButtonZoomIn.setObjectName("pushButtonZoomIn") self.gridLayout.addWidget(self.pushButtonZoomIn, 1, 1, 1, 1) self.pushButtonZoomOut = QtWidgets.QPushButton(Dialog) self.pushButtonZoomOut.setObjectName("pushButtonZoomOut") self.gridLayout.addWidget(self.pushButtonZoomOut, 1, 2, 1, 1) self.pushButtonBack = QtWidgets.QPushButton(Dialog) self.pushButtonBack.setObjectName("pushButtonBack") self.gridLayout.addWidget(self.pushButtonBack, 1, 3, 1, 1) self.pushButtonForward = QtWidgets.QPushButton(Dialog) self.pushButtonForward.setObjectName("pushButtonForward") self.gridLayout.addWidget(self.pushButtonForward, 1, 4, 1, 1) self.pushButtonStop = QtWidgets.QPushButton(Dialog) self.pushButtonStop.setObjectName("pushButtonStop") self.gridLayout.addWidget(self.pushButtonStop, 1, 5, 1, 1) self.pushButtonReload = QtWidgets.QPushButton(Dialog) self.pushButtonReload.setObjectName("pushButtonReload") self.gridLayout.addWidget(self.pushButtonReload, 1, 6, 1, 1) self.widget = QWebEngineView(Dialog) font = QtGui.QFont() font.setPointSize(12) self.widget.setFont(font) self.widget.setStyleSheet("background-color: rgb(200, 194, 193);") self.widget.setObjectName("widget") self.gridLayout.addWidget(self.widget, 2, 0, 1, 7) self.retranslateUi(Dialog) QtCore.QMetaObject.connectSlotsByName(Dialog) def retranslateUi(self, Dialog): _translate = QtCore.QCoreApplication.translate Dialog.setWindowTitle(_translate("Dialog", "Dialog")) self.label.setText(_translate("Dialog", "Enter URL")) self.pushButtonGo.setText(_translate("Dialog", "GO")) self.pushButtonZoomIn.setText(_translate("Dialog", "ZoomIn")) self.pushButtonZoomOut.setText(_translate("Dialog", "ZoomOut")) self.pushButtonBack.setText(_translate("Dialog", "Back")) self.pushButtonForward.setText(_translate("Dialog", "Forward")) self.pushButtonStop.setText(_translate("Dialog", "Stop")) self.pushButtonReload.setText(_translate("Dialog", "Reload"))
class RssWidget(QtWidgets.QWidget): def __init__(self): QtWidgets.QWidget.__init__(self) self.categories = QtWidgets.QListWidget() self.categories.setFixedWidth(100) font = QtGui.QFont("Garamond") font.setPointSize(8) font.setBold(True) self.categories.setFont(font) self.get_rss_categories() keys = list(rss_contents.keys()) if keys: self.data_table = RSSModel(list(rss_contents[keys[0]].keys())) else: self.data_table = RSSModel([]) self.description = QWebEngineView() self.description.setFont(QtGui.QFont("Helvetica")) self.description.setFocusPolicy(QtCore.Qt.NoFocus) content_layout = QtWidgets.QVBoxLayout() self.data_table_view = QtWidgets.QTableView() self.data_table_view.horizontalHeader().setStretchLastSection(True) self.data_table_view.setModel(self.data_table) x = self.frameGeometry().height() self.data_table_view.setFixedHeight(x / 2 - 10) self.data_table_view.clicked.connect(self.show_rss_description) content_layout.addWidget(self.data_table_view) content_layout.addWidget(self.description) main_layout = QtWidgets.QHBoxLayout() main_layout.addWidget(self.categories) main_layout.addLayout(content_layout) self.setLayout(main_layout) def is_categories(self): if self.categories.count() > 0: return True else: return False def refresh_table(self): self.description.setHtml("") for i in range(self.data_table.rowCount(), 0, -1): self.data_table_view.selectRow(i) def show_rss_titles_from_categories(self, data): if data is None: self.data_table.update([]) return content = data.text() titles = list(rss_contents[content].keys()) self.data_table.update(titles) self.refresh_table() def show_rss_description(self, index): title = self.data_table.get_title(index) current_rss_dict = rss_contents[self.categories.currentItem().text()] if title not in current_rss_dict: self.description.setHtml("") return description = current_rss_dict[title] self.description.setHtml(description) def get_rss_categories(self): for key in rss.keys(): items = self.categories.findItems(key, QtCore.Qt.MatchExactly) if key not in [item.text() for item in items]: self.categories.addItem(key) self.categories.itemClicked.connect( self.show_rss_titles_from_categories)