代码拉取完成,页面将自动刷新
# -*- encoding: utf-8 -*-
'''
文件: Experiment4.py
时间: 2020/06/12 18:54:45
作者: 20192426 陈瀚文
'''
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'Experiment4.ui'
#
# Created by: PyQt5 UI code generator 5.15.0
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from Ex4_func import * # 导入爬虫函数
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(960, 900)
MainWindow.setMinimumSize(QtCore.QSize(960, 900))
MainWindow.setMaximumSize(QtCore.QSize(960, 900))
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.widget_query = QtWidgets.QWidget(self.centralwidget)
self.widget_query.setGeometry(QtCore.QRect(0, 0, 960, 80))
self.widget_query.setObjectName("widget_query")
self.pushButton_hot = QtWidgets.QPushButton(self.widget_query)
self.pushButton_hot.setGeometry(QtCore.QRect(280, 26, 200, 28))
self.pushButton_hot.setObjectName("pushButton_hot")
self.label_img = QtWidgets.QLabel(self.widget_query)
self.label_img.setGeometry(QtCore.QRect(100, 26, 80, 27))
self.label_img.setStyleSheet("")
self.label_img.setText("")
self.label_img.setPixmap(QtGui.QPixmap("D:\\网空专业\\大一下\\Python程序设计\\Learnpython\\Experiment\\Experiment4\\WB_logo.png")) # 设置微博logo
self.label_img.setObjectName("label_img")
self.pushButton_news = QtWidgets.QPushButton(self.widget_query)
self.pushButton_news.setGeometry(QtCore.QRect(600, 26, 200, 28))
self.pushButton_news.setObjectName("pushButton_news")
self.label_time = QtWidgets.QLabel(self.centralwidget)
self.label_time.setGeometry(QtCore.QRect(50, 84, 900, 20))
font = QtGui.QFont() # 设置字体
font.setFamily("微软雅黑 Light")
self.label_time.setFont(font)
# self.label_time.setText("{}".format(UpdateTime()))
self.label_time.setObjectName("label_time")
self.label_time.setStyleSheet("color:#999") # 设置字体颜色
self.label_note = QtWidgets.QLabel(self.centralwidget)
self.label_note.setGeometry(QtCore.QRect(660, 84, 260, 20))
self.label_note.setFont(font)
self.label_note.setObjectName("label_note")
self.label_note.setStyleSheet("color:#999") # 设置字体颜色
self.tableView_result = QtWidgets.QTableView(self.centralwidget)
self.tableView_result.setGeometry(QtCore.QRect(30, 110, 900, 750))
self.tableView_result.setMinimumSize(QtCore.QSize(900, 750))
self.tableView_result.setMaximumSize(QtCore.QSize(900, 750))
self.tableView_result.setObjectName("tableView")
self.model = QStandardItemModel()
# 纵向表头不可见
self.tableView_result.verticalHeader().setVisible(False)
# 设置表格内容文字大小
font = QtGui.QFont()
font.setPointSize(10)
self.tableView_result.setFont(font)
# 设置表格内容不可编辑
self.tableView_result.setEditTriggers(QAbstractItemView.NoEditTriggers)
# 垂直滚动条始终开启
self.tableView_result.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
MainWindow.setCentralWidget(self.centralwidget)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
self.pushButton_hot.clicked.connect(lambda: self.PushHot()) # 绑定pushButton_hot按钮的单机事件
self.pushButton_news.clicked.connect(lambda: self.PushNews()) # 绑定pushButton_news按钮的单机事件
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "微博热搜"))
self.pushButton_hot.setText(_translate("MainWindow", "热搜榜"))
self.pushButton_news.setText(_translate("MainWindow", "要闻榜"))
self.label_note.setText(_translate("MainWindow", "提示:双击具体标题可跳转至浏览器"))
def DisplayTable1(self, row, column, data):
# 功能:让tableView_result控件展示爬取的热搜
self.model.clear()
for a in range(row):
for b in range(column):
# 添加表格内容
item = QStandardItem(data[a][b])
item.setTextAlignment(Qt.AlignCenter)
# 向表格存储模式中添加表格具体信息
self.model.setItem(a, b, item)
# 设置表格存储数据的模式
self.tableView_result.setModel(self.model)
def DisplayTable2(self, row, data):
# 功能:让tableView_result控件展示爬取的要闻
self.model.clear()
for a in range(row):
# 添加表格内容
item = QStandardItem(data[a])
item.setTextAlignment(Qt.AlignCenter)
id = QStandardItem("{}".format(a + 1))
id.setTextAlignment(Qt.AlignCenter)
# 向表格存储模式中添加表格具体信息
self.model.setItem(a, 0, id)
self.model.setItem(a, 1, item)
# 设置表格存储数据的模式
self.tableView_result.setModel(self.model)
def PushHot(self):
result_h = search_hot()
self.DisplayTable1(len(result_h), len(result_h[0]), result_h)
self.model.setHorizontalHeaderLabels(['序号', '内容', '标签', '热度'])
self.tableView_result.setColumnWidth(0, 50)
self.tableView_result.setColumnWidth(1, 670)
self.tableView_result.setColumnWidth(2, 50)
self.tableView_result.setColumnWidth(3, 100)
try:
self.tableView_result.doubleClicked.disconnect() # 防止将self.table_openhotlink()绑定多次
except:
pass
self.tableView_result.doubleClicked.connect(lambda: self.table_openhotlink()) # 绑定tableView_result的双击事件
def PushNews(self):
result_n = search_news()
self.DisplayTable2(len(result_n), result_n)
self.model.setHorizontalHeaderLabels(['序号', '内容'])
self.tableView_result.setColumnWidth(0, 50)
self.tableView_result.setColumnWidth(1, 820)
try:
self.tableView_result.doubleClicked.disconnect() # 防止将self.table_opennewslink()绑定多次
except:
pass
self.tableView_result.doubleClicked.connect(lambda: self.table_opennewslink()) # 绑定tableView_result的双击事件
def table_openhotlink(self):
# 功能:根据tableView_result中双击的位置打开对应的热搜链接
row = self.tableView_result.currentIndex().row()
link = search_hot_link(row)
openbrowser(link)
def table_opennewslink(self):
# 功能:根据tableView_result中双击的位置打开对应的要闻链接
row = self.tableView_result.currentIndex().row()
link = search_news_link(row)
openbrowser(link)
def show_MainWindow():
"""
功能:显示主窗体
"""
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.setWindowIcon(QIcon("D:\\网空专业\\大一下\\Python程序设计\\Learnpython\\Experiment\\Experiment4\\icon_wb.ico")) # 设置程序图标
MainWindow.show()
sys.exit(app.exec_())
if __name__ == "__main__":
# 程序入口
show_MainWindow()
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。