install
先安装 python3,然后安装 Anaconda 2019.10
pycharm 社区版 2019.3.1
创建虚拟环境 conda create -n pyqt_stock python=3.7 anaconda
conda update -n base -c defaults conda
pip install pyqt5
pip install pyqt5 -i https://mirrors.ustc.edu.cn/pypi/web/simple/ pip install pyqt5-tools -i https://mirrors.ustc.edu.cn/pypi/web/simple/
|
安装 QT5 然后可以使用设计工具设计界面
pyuic5.exe 将 Designer 生成的 ui 文件 转换为 python 文件
pyrcc5.exe 将 creator 生成的资源文件 qrc 转换为 python 文件
pylupdate5.exe 多语言设计时语言资源文件的工具软件
设计界面
使用 QtDesigner 设计界面然后保存为 xx.ui 文件,使用 pyuic5 转换为 python 文件
pyuic5 -o ui_xxx.py xxx.ui
|
响应界面事件
import sys
from PyQt5 import QtWidgets from PyQt5.QtWidgets import QWidget
import ui_main
class mainUi(QWidget): def __init__(self,parent=None): super().__init__(parent) self.__ui = ui_main.Ui_Form() self.__ui.setupUi(self) self.__ui.btn_loadDataByDate.clicked.connect(self.OnBtnLoadDataByDate)
def OnBtnLoadDataByDate(self): self.__ui.label.setText("ddd")
if __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) baseWidget = mainUi()
baseWidget.show() sys.exit(app.exec_())
|
使用信号槽更新界面信息
使用线程池的方式
没使用线程的方式
class DaoService(QThread): signal_str = pyqtSignal(str)
def get_trade_date(self): """ 从接口获取有效交易日信息,存入数据库,返回结构样例 exchange cal_date is_open 0 SSE 20180101 0 1 SSE 20180102 1 2 SSE 20180103 1 """ self.signal_str.emit(r'开始获取交易日期...') str_cur_date = datetime.datetime.now().strftime("%Y")
class DataManagerUi(QWidget): """ 资金曲线类 保存每个交易日的资金余额,绘制折线图 """
def __init__(self, parent=None): super().__init__(parent) self.__ui = ui_data_manager.Ui_Form() self.__ui.setupUi(self) self.dao_service = DaoService() ...
def sign_str_proc(self, msg): self.__ui.edit_log.append(msg)
class MainUi(QWidget): def __init__(self, parent=None): super().__init__(parent) self.__ui = ui_main.Ui_Form() self.__ui.setupUi(self) self.data_manager = DataManagerUi() ...
if __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) baseWidget = MainUi() baseWidget.data_manager.dao_service.signal_str.connect(baseWidget.data_manager.sign_str_proc)
|