QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2357|回复: 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
    / A. b! Y+ s; }0 @/ x
    Python UI设计学习笔记,在学习的UI框架中嵌入其他ui组件:增加组件到主画面的pages中/ v! `! ^. J; o: _; `
    1 t# T4 X) Q( y6 @/ _, S9 A2 j
    + W3 s5 R3 x" n
    文章目录& N' H- ~) M7 k, r+ p4 P
    在Pyside2中嵌入其他ui组件:增加组件到`pages`中,在`develop`分支中开发# `% e: O1 ~7 A/ w" e" R
    组件1:`jupyter qtconsole`8 O) q4 a' n8 A5 p3 x
    组件2:`matplotlib FigureCanvas for qtwidget`' @3 P: c: N7 i
    组件3:`pyqtgraph`9 b2 z' P! ~2 A. G8 i4 X, ~  e2 V
    在Pyside2中嵌入其他ui组件:增加组件到pages中,在develop分支中开发
    $ H* ?0 T* P6 V以下组件部分测试测试参考:0 V& P2 S4 T% r  G! {# w" `

    & n% t8 z3 ]' U' s+ A# C' F7 Y参考的B站视频# Q: L) v' @/ ^" c4 N
    qtconsole 官方文档:The Qt Console for Jupyter6 D- o+ ?4 f6 M" j0 l
    组件1:jupyter qtconsole
    + {! ]4 v7 c$ U& X% k/ k$ l1、安装 qtconsole 库, 经测试发现,该库目前不支持 pyside6, 所以更改解释器环境到 pyqt5 or pyside2& ^7 ]: j& B/ }. D
        pip install qtconsole -i  https://pypi.tuna.tsinghua.edu.cn/simple/ Q3 j; M& f1 {/ }$ i* ?% p. E
    1: B1 i. X8 t! I$ J% ^
    2、尝试启动0 ?  z* N& M9 I, J" y
       jupyter qtconsole
    6 K3 I0 z! a* L2 S/ R1
    2 k# e: a) x+ }6 T1 [7 n/ A8 C7 C1 T9 j. |
    . S) D  K4 M- X$ i' _& b7 I
    3、尝试嵌入组件到pyside2 ui中) p0 n) u' ^9 r. q+ H& Y2 S

    * H; a' ^0 C. m, f5 [9 i" B0 x3.1、复制参考的py代码 consolewidget.py 到 gui.widgets 文件目录下0 c8 }, u( r) L& Y' G

    , O& R/ o  |' m3 u8 p7 Q% [9 T3.2、在Qt Designer 使用 Widget(基类/父类) promote to ConsoleWidget,并修改对象名称,操作如下图:
    # [3 h8 S! ~* [8 y% o0 X
    " _# f' d! @3 S& ?4 J3 r& ]. b. F9 |- u3 x( M9 J' X
    3.3、ui显示样式修改1: widget 样式表/ D1 D% v/ @' O* [5 ]
    8 \! T8 I! w, @. k, \7 z
    /*设置父类窗体,背景边框等属性*/% E% \% E; a" z/ ^6 v1 _. I
    QWidget {
    ( ~/ }; h& `/ Q3 B4 d        background-color: rgb(33, 35, 45);
    4 e3 x+ H4 U3 P, w/ N9 I. m5 a        padding: 8px;
    " O/ R6 ?: m" ?        border: 2px solid #c3ccdf;
    3 H4 j( o% z5 x        color: rgb(255, 255, 255);9 F2 D1 U0 I9 H
            border-radius: 10px;
    2 |- x1 O( n; G3 q}
    9 A, q7 r0 `* v% E! I: ~; ^/ p8 P1- L' T& q. ?, D1 n. P2 \
    29 H5 T! N+ {1 f; t
    3/ g5 ~& g8 O. `; i
    4
    8 M0 L3 ^3 h# v: ?, W5
    ! f+ ?- c, s' q  K6
    : c  k9 L3 m/ d7" d5 a& T5 U7 W+ T7 L
    8
    ' b& k& n9 g4 w, k6 p& `3.4、ui显示样式修改2:qtconsole启动界面风格指定
    * e2 n! Z+ H2 E/ D7 y    self.set_default_style('linux')
    6 H( h  N. J" ~4 [9 ~6 Z1
    5 u! O! k' _: D. C( H% S( a3.5、该窗口的实例化在uic自动生成的代码中
    0 Y* X% B+ C1 C# |. |7 k* Y    self.ConsoleWidget = ConsoleWidget(self.frame_2)# _  G8 ?* o6 D8 I$ r+ r  g9 H
        self.ConsoleWidget.setObjectName(u"ConsoleWidget")
    5 ?& v9 o7 e" }# ~1
    " P) S7 x) i7 f' Q% P: w2
    / x. T$ n7 w5 t$ O0 K1 V3.6、运行效果, A& g6 ]1 h$ r3 z+ o$ [9 e

    0 ]: ^# T! N0 O  R: P$ }, Z6 M组件2:matplotlib FigureCanvas for qtwidget/ I& m5 [/ O7 Q% [8 ]( t
    1、安装相关库, 指定清华源1 L" o+ X: c  f, V
        pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
    : u; x1 x  s9 q( L  k3 M' r! C    pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
    . Q' O- K8 @" q' N2 x    pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
    ; |1 i4 e$ a8 v( z" @2 G# s  A& T19 y" v# r" e4 _
    2
    * Q3 m' w, ^; o7 K7 ]' V3
    ; k$ W- N) l! w! U! r% p% |. Syoutube 参考视频
    / m5 I9 C3 I2 y6 ?7 c7 j7 z; ^9 o网站教程0 X% b  V! j) R  p4 H/ N! t
    youtube 参考视频: 不同主题风格调整方法,导入csv数据显示6 e2 L8 {  s8 Z. Y
    2、 复制 MplWidget.py 文件到 gui/widget 目录下
    + [) W, J+ l9 V# H" W3、测试 animation, Plotting Live Data in Real-Time2 {+ Y. j, B+ }9 W. ~1 l
    8 m+ e: O1 b7 x+ ^! Z
    测试方法:plot_live_data()
    ( A: I' y7 X* B个人理解,animation 应该就是定义了一个与UI同线程的定时器。
    . W3 u% q: ^, L0 ]: w% L组件3:pyqtgraph
    ) a7 e% K* x# q, F参考视频1+ ?: ^! T* W: J! e' V+ A$ j7 t' j
    参考视频2et’s Build an Audio Spectrum Analyzer in Python! (pt. 3) Switching to PyQtGraph  J) j) m5 j7 l- q7 }- h
    ; N# A5 F$ X9 A
    1、安装相关库, 指定清华源
    / i  H/ }7 s- p- O+ X    pip install pyqtgraph -i https://pypi.tuna.tsinghua.edu.cn/simple3 C  s2 b# L+ b9 [8 u2 a2 _4 B
    1" g2 L. x5 ~+ Z- R# Z+ R3 J* d
    2、在 gui\widgets 目录中增加 pyqtgraph_test.py文件
    3 x: r8 Z7 P+ G& z增加 2个按钮(draw, clear) 和 1个pygtgraph窗口控件(PlotWidget) 布局
    5 c' I, [6 y3 u7 ~定义刷新时间,帧率,每隔通道的数据记录最大长度等概念
    : y9 R+ k1 }( V; A# X4 O注意,每个点之间的采样时间实时性不是QTimer能保证的。
    & u# d& c' i1 }  p4 l/ a8 u0 A还需要想清楚如何保证准确的采样时间,以及与数据刷新时间间隔之间的关系。(参考已有的scope的习惯)1 S9 v: e7 D6 d2 `2 P
    使用 QTimer 定时器, 实现动态刷新的功能, 60FPS -> 定时器时间间隔设定为 1000/60ms
    ' x, O0 d- z4 O- c0 o2 N调用 self.graphicsView.plot(self.y_vals) 绘图,但注意,重复调用相当于创建多个通道的曲线。如果只想显示一个通道的曲线,有2种方式, V. i) `+ k1 z/ T/ e
    方式1:在 plot() 方法前,调用 clear() 方法
    % {) W! D2 d+ @+ \% r' J' s方式2:使用 self.graphicsView.plot.setData() 方法刷新数据,对应的数据清除方法也改一下,改成setData([])
    ) b# `: i6 |% Z" G7 T2 D+ H. U3、参考 Audio Spectrum Analyzer 代码,优化多通道显示刷新方式2 a0 U7 u( W6 D  x% P" R/ }+ w
    源工程运行前,需要安装的库,pyaudio使用pip安装会失败,使用管理员模式启用conda终端安装
    5 ~; A! h( G1 H6 P- `& P   pip install opensimplex -i https://pypi.tuna.tsinghua.edu.cn/simple( r0 o7 B6 A+ U, L: \. m$ O* e
       conda install pyaudio -i https://pypi.tuna.tsinghua.edu.cn/simple, X3 ]( _3 ~' I$ X4 S
    1# s7 ], n6 h; ]& X( m. s
    2
    + L. S7 x2 Q: `( H: ]  f  r参考 self.traces = {}、set_plotdata() 数据结构和方法,优化多通道显示逻辑4 n5 j3 i$ o. G' `! ~

    . I. O1 |( E7 b) a3 z右键RUN pyqtgraph_test.py,效果如下:. q1 _7 u( P" |- a/ x
    1 [$ c! r2 F" O4 o7 U- i' h

    , ]' p8 s, h8 n2 s$ D- N1 O文章知识点与官方知识档案匹配,可进一步学习相关知识0 _) A( J$ T) p4 d
    ————————————————* A3 e1 _& D) j9 g* Y
    版权声明:本文为CSDN博主「HUIJIANG123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。2 o% d. z0 a! e2 t- s0 r- X
    原文链接:https://blog.csdn.net/u012928587/article/details/124547230) N& T* n. N7 K- E! P8 H
    4 [6 Q# x* s: c5 @

    7 g& F9 F* d0 e: 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-26 18:38 , Processed in 0.408118 second(s), 51 queries .

    回顶部