QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2305|回复: 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
    0 h) k* x/ c% c8 E
    Python UI设计学习笔记,在学习的UI框架中嵌入其他ui组件:增加组件到主画面的pages中7 K2 ]3 R% o; J0 @% z

    : B. {$ ^* Q9 P, `( L0 ~" g3 v, z4 \- v5 w- M# C' V) |
    文章目录
    " ?( z* x+ Q/ @在Pyside2中嵌入其他ui组件:增加组件到`pages`中,在`develop`分支中开发
    2 q, C3 H5 s0 N8 _: X& @组件1:`jupyter qtconsole`
    & t/ ^- f, E0 h7 e组件2:`matplotlib FigureCanvas for qtwidget`
    % t- \% |1 n( ?组件3:`pyqtgraph`  b. ~' W! `7 a( E+ y; K4 t
    在Pyside2中嵌入其他ui组件:增加组件到pages中,在develop分支中开发
    $ h; o' E3 p+ H) P以下组件部分测试测试参考:
    : L7 P7 a8 S2 _* x2 T: W
      c- P( o! {7 G* d参考的B站视频
    % A0 Z% f- K* U( ^' }& p" J/ B/ [qtconsole 官方文档:The Qt Console for Jupyter
    7 C3 g: B1 U6 T; u, ]组件1:jupyter qtconsole
    / M. W7 v% R$ e) Z1 e) M, F1、安装 qtconsole 库, 经测试发现,该库目前不支持 pyside6, 所以更改解释器环境到 pyqt5 or pyside2
    % _; x& \/ D2 }9 v& Q    pip install qtconsole -i  https://pypi.tuna.tsinghua.edu.cn/simple
    4 C1 v/ c0 d/ r0 |10 y6 i8 X% `# Z1 g: T
    2、尝试启动
    - ]* B  h2 X/ e2 k) l  V   jupyter qtconsole8 \. ^9 _; {6 F; C" O! Y
    1# B( Y" R* o; @  j, @. Y  u

    . |+ V; l* r2 C8 Z6 R4 x# d: a# @2 M
    3、尝试嵌入组件到pyside2 ui中
    + @6 A1 y) O9 N/ w9 ]; c) a$ V
    ; N0 }+ ?8 A; R& O- T! X" p. g8 y3.1、复制参考的py代码 consolewidget.py 到 gui.widgets 文件目录下
    8 R4 W: X$ N8 Y" `3 {" Z) A
    & @1 x! v5 Q( m* o0 Y3.2、在Qt Designer 使用 Widget(基类/父类) promote to ConsoleWidget,并修改对象名称,操作如下图:
    - W  L7 R, ~; N4 f
    ! i# g9 v: Z/ k/ Y) L4 x
    / _  }4 Y' Y( v8 x8 d3.3、ui显示样式修改1: widget 样式表
    7 z: g8 A# [: v. H7 b1 A5 T) L9 `1 |. f$ P
    /*设置父类窗体,背景边框等属性*/# g6 B. n" Z: F, B# n; ?9 R
    QWidget {% {+ \& M; c: G9 j9 `. N
            background-color: rgb(33, 35, 45);' F2 J1 V' T4 N9 ]: w7 E1 @$ \
            padding: 8px;
    ( _2 X7 ]7 Y& i9 C7 E- T* l) g. r# U        border: 2px solid #c3ccdf;: E  n$ }% s4 {5 x2 I+ e
            color: rgb(255, 255, 255);
    3 y. s! l$ G5 {9 Q8 @        border-radius: 10px;
    ; q8 ?/ S" {/ M. V- e2 i' E}
    * I6 k% t9 R5 z* ?6 r15 p2 L) ^5 Z. `$ B- t
    2
    4 R  c! M: ]+ Y3 R3+ d. Y) f  N. q9 T; J
    4
    8 h' n# F% \, {( M' f! K5
    5 F' r3 {+ k+ m6
    , j- [- d4 G/ B2 c; w6 M: f7+ N" X8 @+ E! I5 l; w, N0 P1 b
    8$ u) n% F. s  S6 H  }- J& ?
    3.4、ui显示样式修改2:qtconsole启动界面风格指定0 K. |' `( K1 J) o) B
        self.set_default_style('linux')
    ! q  D: J! k2 ]5 e2 h# y% b  K5 e1; t  T9 a2 u$ O+ \5 F. t5 Z0 P/ ?7 T
    3.5、该窗口的实例化在uic自动生成的代码中0 r# ?$ D' I8 `( u- [* w8 V
        self.ConsoleWidget = ConsoleWidget(self.frame_2)
    # V' Q8 H, D+ F    self.ConsoleWidget.setObjectName(u"ConsoleWidget")0 v& x5 G0 i9 H* F% ]  L
    1
      l- F( V$ H. g0 ^& Q3 J4 \2
    ' I: \" m9 _5 |1 I3 u1 r3.6、运行效果# _. }) o& Q5 C- q2 I+ x. J* u( n

    0 f( U: N3 o- ]" H+ [1 ^组件2:matplotlib FigureCanvas for qtwidget( q- ?6 h$ ^) J5 K5 e: f. @
    1、安装相关库, 指定清华源
    7 j- W6 g! y( w" x! ^$ {$ i2 X# C7 {    pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
    9 i2 ^( ^( |7 b% M    pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
    0 ^2 H( B- u/ O4 p    pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple7 r; V& n/ L+ |, T/ t4 Y
    12 ~# h/ {6 |  U
    2% k# f9 |& c, x
    3
    # \- h$ z3 r# h  h4 W7 t" dyoutube 参考视频3 N+ o+ g; u7 @0 p) r0 z+ O) S# P
    网站教程
    / k( k  u: x( w: b( l8 P, ?4 T# q# `youtube 参考视频: 不同主题风格调整方法,导入csv数据显示
    3 H5 S* B% o6 S4 d3 T" D$ C2、 复制 MplWidget.py 文件到 gui/widget 目录下
    8 ?3 {& A, b$ O7 X3 \* K  Q3、测试 animation, Plotting Live Data in Real-Time
    7 H  J/ n6 C. J. P  E( O4 R9 u! _7 w" P
    测试方法:plot_live_data()
    & \1 t# t) R8 o# }: i6 L' T个人理解,animation 应该就是定义了一个与UI同线程的定时器。% ?$ I  X, b) s) b# B
    组件3:pyqtgraph' {* c6 p! f3 a2 L. H
    参考视频1
    & _4 b; q6 h- t3 u: w参考视频2et’s Build an Audio Spectrum Analyzer in Python! (pt. 3) Switching to PyQtGraph# ~) T) ]; }+ Z, `

    : }+ H# \/ c) r1 s8 r1、安装相关库, 指定清华源- e4 [1 A4 R. ]2 x$ O7 f7 t
        pip install pyqtgraph -i https://pypi.tuna.tsinghua.edu.cn/simple0 K9 I* Q, L% D
    1
    ; e1 U8 q% b9 e2、在 gui\widgets 目录中增加 pyqtgraph_test.py文件2 Z' g! s& b# g) @2 `* q+ @4 d
    增加 2个按钮(draw, clear) 和 1个pygtgraph窗口控件(PlotWidget) 布局# @8 k& n( B1 D" C
    定义刷新时间,帧率,每隔通道的数据记录最大长度等概念
    ( X. s7 q* d# V  Z注意,每个点之间的采样时间实时性不是QTimer能保证的。) H/ q* x. a+ d
    还需要想清楚如何保证准确的采样时间,以及与数据刷新时间间隔之间的关系。(参考已有的scope的习惯)
      Z4 e( Y! E9 S' N9 a使用 QTimer 定时器, 实现动态刷新的功能, 60FPS -> 定时器时间间隔设定为 1000/60ms: G7 @. H  i  U
    调用 self.graphicsView.plot(self.y_vals) 绘图,但注意,重复调用相当于创建多个通道的曲线。如果只想显示一个通道的曲线,有2种方式
    + n0 d# o$ u: p9 A- S方式1:在 plot() 方法前,调用 clear() 方法
    7 X4 Y7 l& f* O# |+ o. j方式2:使用 self.graphicsView.plot.setData() 方法刷新数据,对应的数据清除方法也改一下,改成setData([])' W# t1 A* o6 a
    3、参考 Audio Spectrum Analyzer 代码,优化多通道显示刷新方式0 n: W8 i5 @! ^& |1 @; {  ~, X) l
    源工程运行前,需要安装的库,pyaudio使用pip安装会失败,使用管理员模式启用conda终端安装; D- U  t: [5 r
       pip install opensimplex -i https://pypi.tuna.tsinghua.edu.cn/simple
    $ j" @% c% T% y2 P$ j& s8 B   conda install pyaudio -i https://pypi.tuna.tsinghua.edu.cn/simple
    4 ]5 `+ |& @$ v: I% x& Q: }1 }4 G1
    6 r8 P$ n" ?& |2. V- y5 V5 V) ?$ k% u1 t- x
    参考 self.traces = {}、set_plotdata() 数据结构和方法,优化多通道显示逻辑
    2 b+ I5 v0 {& i: q; D  l6 n& h9 f8 m2 x- M- V; a  p1 o/ s8 S
    右键RUN pyqtgraph_test.py,效果如下:
    5 m0 L' v/ h' X. p5 k2 T# M( d5 c3 s1 z5 V/ @
    3 x4 _; c# e, ?8 O. e- L; Q' A
    文章知识点与官方知识档案匹配,可进一步学习相关知识. W4 H. w# o1 Y0 p, y. u) o
    ————————————————' ~+ H# T4 V; l0 x6 F- V
    版权声明:本文为CSDN博主「HUIJIANG123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。+ X- |: F1 O) C6 G' B
    原文链接:https://blog.csdn.net/u012928587/article/details/1245472306 Z4 V( O1 E. \1 _% U' {7 K! v$ h
    % i5 _6 k4 r" ?$ N) ?: N. X
    * V$ M0 _- W# E0 Y6 D
    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-4-13 11:50 , Processed in 0.426468 second(s), 51 queries .

    回顶部