关于程序员:量化系统-GUI-库-PyQt5-基础以及使用技巧上

32次阅读

共计 3111 个字符,预计需要花费 8 分钟才能阅读完成。

量化零碎 GUI 库 PyQt5 根底以及应用技巧 (上)

python 风行的图形界面库

  1. PyQt:一个基于 C ++ 库 Qt 的 Python 库,提供了丰盛的 GUI 工具和高度可定制的 UI 设计,也是很多商业应用程序的抉择。
  2. wxPython:基于 C ++ 库 wxWidgets 的 Python 库,也提供了丰盛的 GUI 工具和可定制性,特地适宜跨平台应用程序。
  3. PySide:也是一个基于 C ++ 库 Qt 的 Python 库,与 PyQt 十分类似,但更容易许可和商业应用。

以上这些 GUI 库都有其独特的长处和毛病,抉择哪个库取决于我的项目需要和集体偏好。出于对社区、文档以及性能是否弱小综合思考,选用了 PyQt5 这个十分成熟的 GUI 库。

PyQt5 装置以及简略介绍

PyQt5 是一个很成熟的库,qt 功能强大,文档齐全,社区十分沉闷,所以个别碰到的问题都能在网上找到解决方案,还有 Qt Designer 插件通过拖拽的形式即能够疾速画出界面,所拖即所得。

装置

pip install PyQt5

学习材料

demo 案例学习网站链接网址 [1],该网站有控件的学习 demo,能够疾速的理解和学习控件的应用。

pyqt api 文档链接网址 [3],能够查问该 GUI 库的所有接口。

换肤款式链接网址 [2],该开源库换肤,一行代码既能够失去高大上的界面款式。

Qt Designer

Qt Designer 是一个图形化的用户界面(UI)设计工具,它是 Qt 开发工具包(Qt SDK)的一部分。应用 Qt Designer,用户能够通过拖放形式创立用户界面,而后将其导出为代码。这些代码能够与 Qt 库一起应用,以构建桌面应用程序和嵌入式零碎。

总之,Qt Designer 是一个不便易用的工具,它大大简化了用户界面设计的过程,同时也能够进步开发效率和代码品质。

自己不是很举荐将 .ui 文件导出为代码,我感觉 ui 代码没啥难看的,咱们应该把精力放在写业务逻辑代码上,不把 .ui 文件导出为代码,能够大大减少代码量,放弃工程的整洁,而且批改也不便,批改下 .ui 文件,即能够批改界面。

pycharm 中配置

  1. 搜寻 designer.exe 的门路

轻易选一个关上,能关上的就复制该 .exe 文件的残缺门路。

  1. pycharm 配置打开方式快捷方式

File -> Settings -> Tools -> External Tools 点击增加。

  1. 应用

抉择一个文件,右键,External Tools 即可找到该快捷方式

快捷关上

布局与控件概览

上面两张图,是整个 PyQt5 重要布局和重要控件的概览图,通过这 UML 图,咱们能够大略分明了类之间的继承关系。

重要布局 UML 图

重要控件 UML 图

Designer 设计师一些应用技巧

布局次要是应用垂直布局和程度布局,而后层层套娃,应用 Designer 拖控件即可。

适配窗口

控件适配窗口的大小很重要,当窗口最大化或常规化大小切换时,咱们冀望布局的控件能追随主窗口的大小进行适配显示,而不是显示不了或显示一半。

以本工程行业 tab 页面为列:

当咱们拖完控件是预览,惯例窗口大小预览。

当咱们放大下主窗口。

适配,很简略

  1. 选中设计师的两个控件,而后应用垂直布局形式,这时候,你还会看到 Form 顶部还有禁用标识
  1. 再次选中顶级布局,应用垂直布局,这时候 Form 顶级布局禁用标识就不见了,这时就实现了适配工作。

文字描述好啰嗦。

比例问题

有时候咱们通过布局放了几个控件,想散布控件占比问题,能够通过设置 layoutStretch 参数来管制,逗号隔开,每个数字对应控件的占比比例。本案例设置顶部和 tableVew 的垂直占比别离为 1:10

如何拜访 .ui 文件的控件

在设计师 Designer 设计进去的界面,能够通过 PyUIC 工具把 Designer 生成的 .ui 文件转换成 .py 文件的。然而我并不举荐这样的做法,因为界面代码咱们是很少看的。不举荐转换成 .py 文件的起因有二:其一、是减少了工程的代码量,其二、是当想批改 .ui 的界面时,又须要从新转换一次,减少了工作量。

既然如此,不如间接援用 .ui 文件的控件 id 来拜访控件,设置控件属性或者设置控件信号即可。

步骤如下:

  1. 先给控件一个惟一标识。

在 Designer 界面拖出的控件,设置属性 objectName 的惟一标识

  1. 在我的项目工程外面加载 .ui 文件,获取整个 .ui 文件的句柄。
# ui 文件夹的门路
ui_dir_path = os.path.split(os.path.abspath(os.path.realpath(__file__)))[0] + "/.."

# 加载 .ui 文件,获取到整个 .ui 文件的句柄。self.ui = uic.loadUi(os.path.join(ui_dir_path, 'designer/tab_industry.ui'), self)

  1. 通过加载的 .ui 文件句柄获取到控件的惟一标识,从而拜访到控件。

这里示例通过控件惟一标识,设置控件的信号监听器。

批改款式

咱们都心愿能有一个很漂亮的 ui 界面,其实 qt 的设置非常简单,一句代码就能够获取颜值很高的 ui 界面。

首先咱们须要装置 qdarkstyle 款式库。

pip install qdarkstyle

未应用款式前

应用款式 qdarkstyle 库,应用如下:

# 创立 QApplication
app = QApplication(sys.argv)

# 设置样式表 qdarkstyle
app.setStyleSheet(qdarkstyle.load_stylesheet())

# 主窗口
main_window = AppMainWindow(application)
main_window.show_main_window()

sys.exit(app.exec_())

一句话 app.setStyleSheet(qdarkstyle.load_stylesheet()) 立刻能够失去颜值高的彩色款式。

该款式库在 github 网站,款式库 [2],能够去下载该库的应用 demo,外面有很多控件的应用办法。

信号槽机制

信号槽机制简略来说,意思是:发出信号后,通过链接到槽函数后,槽函数就能够接管到信号了。信号能够用户本人定义,也能够是控件收回的信号。

咱们简略的了解下就怎么接管控件收回的信号,调用到咱们链接的函数,其实就是监听。晓得监听足够解决大部分与控件交互的交互问题了。

想晓得具体的状况,去这里看吧,他写得可具体了,链接:信号槽机制 [4]

按钮点击事件案例:

  1. 定义信号接管函数
def btn_add(self):
      """
      日期递增
      :param ui:
      :return:
      """
      date = self.ui.dateTimeEdit.date()
      date = date.addDays(1)
      self.ui.dateTimeEdit.setDate(trade_date(date, self.config(), False))
  1. 链接接管函数
 self.ui.pb_add.clicked.connect(self.btn_add)

参考链接

[1] demo 学习链接:http://static.kancloud.cn/ay66544/pygui/3044832<br/>
[2] 款式库:https://github.com/ColinDuquesnoy/QDarkStyleSheet<br/>
[3] PyQt Documentation: https://www.riverbankcomputing.com/static/Docs/PyQt5/sip-clas…;br/>
[4] 信号槽机制:http://static.kancloud.cn/ay66544/pygui/3044884

写于 2023 年 03 月 11 日 12:30:21

本文由 mdnice 多平台公布

正文完
 0