QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2344|回复: 0
打印 上一主题 下一主题

Python UI设计学习笔记,在学习的UI框架中嵌入其他ui组件:增加组件到主画面的pages中

[复制链接]
字体大小: 正常 放大
杨利霞        

5273

主题

82

听众

17万

积分

  • TA的每日心情
    开心
    2021-8-11 17:59
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    网络挑战赛参赛者

    网络挑战赛参赛者

    自我介绍
    本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。

    群组2018美赛大象算法课程

    群组2018美赛护航培训课程

    群组2019年 数学中国站长建

    群组2019年数据分析师课程

    群组2018年大象老师国赛优

    跳转到指定楼层
    1#
    发表于 2022-9-15 12:28 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta

    ) Z5 C' N* B8 YPython UI设计学习笔记,在学习的UI框架中嵌入其他ui组件:增加组件到主画面的pages中. x# A" ^. X- S' n/ y
    $ e0 k9 a9 q/ R4 e: q
    / u, r6 P7 M# c) o8 T
    文章目录
    7 M' w3 ^0 `+ R在Pyside2中嵌入其他ui组件:增加组件到`pages`中,在`develop`分支中开发
    - R' @% z% v& `6 z( R" W3 [组件1:`jupyter qtconsole`' y: h; `! @7 O
    组件2:`matplotlib FigureCanvas for qtwidget`* {; }/ P6 O7 j
    组件3:`pyqtgraph`
    0 D$ z5 w7 ~8 z1 {在Pyside2中嵌入其他ui组件:增加组件到pages中,在develop分支中开发
    2 ]0 L0 [4 d( }  d# U1 f以下组件部分测试测试参考:
    # @5 {, e) x9 w9 t) n$ e6 q$ `
    . X, n$ B* h* q" G" W参考的B站视频
    2 \% k9 j, z& g5 t7 a$ O* yqtconsole 官方文档:The Qt Console for Jupyter+ @7 g0 F* E( j( @& `
    组件1:jupyter qtconsole4 c* L8 Y4 L/ b' K& A. S) W
    1、安装 qtconsole 库, 经测试发现,该库目前不支持 pyside6, 所以更改解释器环境到 pyqt5 or pyside2
      S# p- ~4 g( F, w9 _8 f+ T    pip install qtconsole -i  https://pypi.tuna.tsinghua.edu.cn/simple# H6 C7 I" F) R$ p
    1
    8 H' C% k# m8 u+ V" ]' i. Q2、尝试启动
    ' m+ F9 t! k0 v  |   jupyter qtconsole
    , Q" ~( g, E7 \7 {% j1
    # X  o4 S3 f( T/ T; z% C
    1 f; }. e$ H4 S5 \: S* x" o- V1 x! @0 X
    3、尝试嵌入组件到pyside2 ui中5 }. U7 y( r& n2 G: n8 t

    1 [2 E5 \1 A6 l* o; d3.1、复制参考的py代码 consolewidget.py 到 gui.widgets 文件目录下2 i8 y# F; R/ Z( {" O% q3 c

    ! Z, ?( h) E* Z% o3.2、在Qt Designer 使用 Widget(基类/父类) promote to ConsoleWidget,并修改对象名称,操作如下图:8 L2 b% S) C- g& y
    5 o# T3 M& W0 N& Y" H4 F  |

    4 r% j: {1 V% ~( s" G8 ^9 C3.3、ui显示样式修改1: widget 样式表
    , N6 M- D- s" y# y0 M4 U: k
    ' a. Y& D+ t! c4 E' b4 Q8 W& x) a/*设置父类窗体,背景边框等属性*// c2 _( z$ j, p4 Y6 p$ ]) A
    QWidget {
    0 S3 D+ P% J7 B- Q$ \! T8 z* X        background-color: rgb(33, 35, 45);3 ?9 x, K: C* a0 O) ]
            padding: 8px;
    & b$ }! M6 L% C- ]        border: 2px solid #c3ccdf;; o# J& S; s4 |
            color: rgb(255, 255, 255);
    : T# w( v3 y: {0 I5 f        border-radius: 10px;
    8 {  n7 y$ b4 m, \' _}3 |: U  Y% B1 `0 I
    1
    0 W* U( D8 ]$ D& F8 p& s+ ?% u2
    % Q3 m/ |9 d4 y/ g$ H3
    ' c+ k, o. O7 i  l. ]4 w+ Q% Q4
    1 X3 x# }0 p7 E% b0 j5- m' C+ V( E& u
    6
    * [! P/ \) r3 c! P: _; n* U3 N7! O. k3 J3 N: r+ @
    87 W- @. o% Z. q# S& B( A
    3.4、ui显示样式修改2:qtconsole启动界面风格指定
    . k% j: p7 {: w- m' v$ t! Z& o  O3 [    self.set_default_style('linux')' X8 \0 P6 Z7 ^- x9 ]# H. u% j) a
    1
    6 Q% x" f- ^6 I+ J" _- P+ T3.5、该窗口的实例化在uic自动生成的代码中6 Y4 s; Q3 o7 p- \% |0 ~5 r
        self.ConsoleWidget = ConsoleWidget(self.frame_2)
    & y4 z) T, M! {* \2 m    self.ConsoleWidget.setObjectName(u"ConsoleWidget")
    * r1 C+ u7 m. B$ C$ E. m1
    ) g1 y% u4 k( @7 e, M, D2' e3 I& Q% X, q: u1 X4 I2 d+ u
    3.6、运行效果! z6 J+ i. [* f! o! D

    ! n% ^* ]9 v5 d$ P组件2:matplotlib FigureCanvas for qtwidget
    0 u/ \- f; y8 Y) I1、安装相关库, 指定清华源
    3 g! ?1 b! f1 K$ t    pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple1 ^8 j9 O7 O1 z& q9 W
        pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
    + d% d: P$ i# C) [% v) q    pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
    % u7 j+ ?% X- Z& h1
    " W2 J. s% h! d  j6 S29 [. Z; l6 i  ?6 ?* E
    3
    . \+ J5 g7 s6 o8 iyoutube 参考视频9 \$ j- D, d9 P  i, @( k( I6 C
    网站教程9 ~  r* q0 b" j0 E0 N. T* t
    youtube 参考视频: 不同主题风格调整方法,导入csv数据显示7 k2 c1 c2 w. [. Q+ T
    2、 复制 MplWidget.py 文件到 gui/widget 目录下! f/ a) q" }. Z3 Y( q2 C# k
    3、测试 animation, Plotting Live Data in Real-Time
    # z/ p9 h9 G3 L' p- i5 j$ H  M" `5 ?$ E# F- U
    测试方法:plot_live_data()
    # s$ H" A4 E* a: l3 V, G/ j; b个人理解,animation 应该就是定义了一个与UI同线程的定时器。- _0 o. I' L! E  T! Y
    组件3:pyqtgraph
    * g( ?/ ]( r4 I+ Y7 K参考视频1
    * x) Q) r7 V- M/ Y2 M6 ~  s* h* }参考视频2et’s Build an Audio Spectrum Analyzer in Python! (pt. 3) Switching to PyQtGraph
      R- B; L& H8 G4 p% j1 ]/ R' d4 m% O3 I8 l$ N. ^
    1、安装相关库, 指定清华源
    " \' G5 C7 m, w( ]# S; {5 [    pip install pyqtgraph -i https://pypi.tuna.tsinghua.edu.cn/simple6 d4 S% J5 o/ c/ ~# R+ V, i
    1
    - M5 J: `1 K. J2 o. x2、在 gui\widgets 目录中增加 pyqtgraph_test.py文件' U4 z5 v$ q) I( Z) N, _5 T
    增加 2个按钮(draw, clear) 和 1个pygtgraph窗口控件(PlotWidget) 布局
    9 G0 R% h8 e& |( ?- l. a定义刷新时间,帧率,每隔通道的数据记录最大长度等概念+ g0 t9 M/ |% ]2 }4 N4 v% Z/ e8 Z
    注意,每个点之间的采样时间实时性不是QTimer能保证的。
    : m/ B$ x8 Q1 L7 Y4 P8 L还需要想清楚如何保证准确的采样时间,以及与数据刷新时间间隔之间的关系。(参考已有的scope的习惯)/ F1 n3 g% H, j# f
    使用 QTimer 定时器, 实现动态刷新的功能, 60FPS -> 定时器时间间隔设定为 1000/60ms9 k% b5 d* b4 ^' r. _, ]/ p
    调用 self.graphicsView.plot(self.y_vals) 绘图,但注意,重复调用相当于创建多个通道的曲线。如果只想显示一个通道的曲线,有2种方式
    ; }+ s, R# j, K- K8 v4 Y方式1:在 plot() 方法前,调用 clear() 方法
    ( w0 Z) a9 O0 ~; b2 E% \9 `方式2:使用 self.graphicsView.plot.setData() 方法刷新数据,对应的数据清除方法也改一下,改成setData([])% \2 e5 V& y5 j6 t4 f, Y& g
    3、参考 Audio Spectrum Analyzer 代码,优化多通道显示刷新方式- i8 |( h) S  R- S
    源工程运行前,需要安装的库,pyaudio使用pip安装会失败,使用管理员模式启用conda终端安装
    7 t8 V) d8 T. I) s9 Y$ a# k   pip install opensimplex -i https://pypi.tuna.tsinghua.edu.cn/simple
    % _# D0 w, o7 l* ?   conda install pyaudio -i https://pypi.tuna.tsinghua.edu.cn/simple
    7 H, D8 v4 \9 f  C$ h$ D$ @1 @& k1/ `$ v* j1 c$ X4 K
    2$ f' N" V) _0 z4 ]
    参考 self.traces = {}、set_plotdata() 数据结构和方法,优化多通道显示逻辑
    5 h* f. \% Q& g0 L+ @% e* C, ~
    , y* U* B% x6 H& E右键RUN pyqtgraph_test.py,效果如下:
    * m- _! H4 l+ ]" A+ d* F: @* {+ A6 E4 F$ K1 j

    1 Z- S. P9 ]- Y3 e文章知识点与官方知识档案匹配,可进一步学习相关知识
    4 Z( T9 h* E2 Z0 K2 }————————————————0 q) i2 O; y+ ~6 e1 x- W
    版权声明:本文为CSDN博主「HUIJIANG123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。5 D. p; o/ r7 X6 B
    原文链接:https://blog.csdn.net/u012928587/article/details/124547230. H8 E$ ]( }# W
    9 X% @6 |6 _0 j
    8 C) `7 s; c( E7 F3 n+ I
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-8-6 21:32 , Processed in 0.394857 second(s), 51 queries .

    回顶部