第一次写GUI,猛猛超时,能改的都改了,到底哪里有问题..
图片是保存好在文件夹里的,字典是计算好没有问题的,求大家帮我看看qwq
import sys
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout, QWidget, QLabel, QGridLayout, QLineEdit, QMessageBox,QTextEdit
from PyQt5.QtCore import Qt
from 股市精简分析 import ave_open_price_dic, ave_close_price_dic, ave_highest_price_dic,ave_lowest_price_dic, ave_trade_volume_dic, ave_price_limit_dic,ave_amplitude_dic,ave_turnover_dic, highest_price_dic,lowest_price_dic
class StartWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("股市精简分析(针对2021年100支股)")
self.setGeometry(100, 100, 300, 200)
start_btn = QPushButton("开始", self)
start_btn.clicked.connect(self.on_start_clicked)
layout = QVBoxLayout()
layout.addWidget(start_btn)
central_widget = QWidget()
central_widget.setLayout(layout)
self.setCentralWidget(central_widget)
def on_start_clicked(self):
self.main_window = MainScreen(self)
self.hide()
self.main_window.show()
class MainScreen(QMainWindow):
def __init__(self, start_window):
super().__init__()
self.start_window = start_window
self.setWindowTitle("主页面")
self.setGeometry(100, 100, 400, 300)
self.overview_btn = QPushButton("股市总体情况概览", self)
self.overview_btn.clicked.connect(self.on_overview_clicked)
self.search_btn = QPushButton("单支股票查询", self)
self.search_btn.clicked.connect(self.on_search_clicked)
layout = QVBoxLayout()
layout.addWidget(self.overview_btn)
layout.addWidget(self.search_btn)
central_widget = QWidget()
central_widget.setLayout(layout)
self.setCentralWidget(central_widget)
def on_overview_clicked(self):
self.overview_window = OverviewScreen(self)
self.overview_window.show()
def on_search_clicked(self):
self.search_window = SearchScreen(self)
self.search_window.show()
# 股市总体情况按钮页面
class OverviewScreen(QMainWindow):
def __init__(self, parent):
super().__init__(parent)
self.setWindowTitle("股市总体情况概览")
self.setGeometry(100, 100, 600, 400)
self.back_btn = QPushButton("返回", self)
self.back_btn.clicked.connect(self.on_back_clicked)
# 创建图片按钮
self.image_btns = []
for i in range(1, 8):
button = QPushButton(f"图片{i}", self)
button.clicked.connect(lambda _, index=i: self.show_image(index))
self.image_btns.append(button)
# 添加图片按钮说明
expl_overview_pic = QTextEdit(self)
#expl_overview_pic.setGeomatry(50,50,500,300)
expl_overview_pic.setText('图片1:各支股票在一年内的开盘、收盘均值柱状图 \n 图片2:各支股票在一年内的最高价柱状图 \n 图片3:各支股票在一年内的最低价柱状图 \n 图片4:各支股票在一年内的复合涨跌幅柱状图 \n 图片5:各支股票在一年内的平均振幅散点图 \n 图片6:各支股票在一年内的平均换手率柱状图 \n 图片7:各支股票总交易量柱状图')
def on_back_clicked(self):
self.parent().show()
self.hide()
def show_image(self, index):
# 显示图片
image_path = f"path_to_images/image{index}.png" # 替换为实际图片路径
label = QLabel(self)
label.setPixmap(QPixmap(image_path))
label.show()
# 当关闭标签时返回到页面1
label.destroyed.connect(self.return_to_overview)
def return_to_overview(self):
self.show()
class SearchScreen(QMainWindow):
def __init__(self, parent):
super().__init__(parent)
self.setWindowTitle("股票查询")
self.setGeometry(100, 100, 400, 300)
self.code_input = QLineEdit(self)
self.code_input.setPlaceholderText("输入代码(1001至1100)")
self.search_btn = QPushButton("搜索", self)
self.search_btn.clicked.connect(self.on_search_clicked)
self.back_btn = QPushButton("返回", self)
self.back_btn.clicked.connect(self.on_back_clicked)
layout = QVBoxLayout()
layout.addWidget(self.code_input)
layout.addWidget(self.search_btn)
layout.addWidget(self.back_btn)
central_widget = QWidget()
central_widget.setLayout(layout)
self.setCentralWidget(central_widget)
self.code = None
def on_search_clicked(self):
self.code = self.code_input.text()
# 搜索股票代码的逻辑
if self.code in [f'{number}' for number in range(1001,1101)]:
self.details_window = show_details(self)
self.details_window.show()
else:
self.currentPage = QLabel("无效的代码")
self.show_stock_details(self.code)
def on_back_clicked(self):
self.parent().show()
self.hide()
class show_details(QMainWindow):
def __init__(self,parent):
super().__init__(parent)
self.setWindowTitle(f"代码为{self.code}的股票的详细信息")
self.setGeometry(100, 100, 600, 400)
self.back_btn = QPushButton("返回", self)
self.back_btn.clicked.connect(self.on_back_clicked)
self.image_btns = []
for i in range(1,7):
button = QPushButton(f'图片{i}', self)
button.clicked.connect(lambda _, index=i: self.show_image(index))
self.image_btns.append(button)
# 添加股票详细信息及图片按钮说明
pre_info = QTextEdit(self)
#pre_info.setGeometry(50,50, 500, 300)
pre_info.setText('开盘价年均值',ave_open_price_dic[self.code],'\n收盘价年均',ave_close_price_dic[self.code],'\n 最高价',highest_price_dic[self.code],'\n最低价',lowest_price_dic[self.code],'\n最高价年均',ave_highest_price_dic[self.code],'\n最低价年均',ave_lowest_price_dic[self.code],'\n交易量年均',ave_trade_volume_dic[self.code],'\n换手率年均',ave_turnover_dic[self.code],'/n','涨跌幅年均',ave_price_limit_dic[self.code],'振幅年均',ave_amplitude_dic[self.code])
expl_detail_pic = QTextEdit(self)
#expl_detail_pic.setGeomatry(50,50,500,300)
expl_detail_pic.setText('图片1:价格走势折线图 \n 图片2:成交量柱状图 \n 图片3:涨跌幅散点图 \n 图片4:振幅折线图 \n 图片5:换手率柱状图 \n 图片6:移动平均线图 /n 图片7:k线图')
def show_image(self, index):
# 显示图片
image_path = f"股票代码为{self.code}的图片{index}"
label = QLabel(self)
label.setPixmap(QPixmap(image_path))
label.show()
# 当关闭标签时返回到页面1
label.destroyed.connect(self.return_to_overview)
def on_back_clicked(self):
self.parent().show()
self.hide()
#创建实例
app = QApplication(sys.argv)
start_window = StartWindow()
start_window.show()
sys.exit(app.exec())