QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2311|回复: 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

    8 x( h6 f- p' L; o& s# XPython UI设计学习笔记,在学习的UI框架中嵌入其他ui组件:增加组件到主画面的pages中7 g/ G9 ~) F% M% B  u4 U
    0 n* F! S- ^, s5 s. v  o

    & W0 o, n' H& D1 u0 n文章目录
    8 h, E0 V1 \  _2 F/ Y在Pyside2中嵌入其他ui组件:增加组件到`pages`中,在`develop`分支中开发# h2 j* C& p% e
    组件1:`jupyter qtconsole`$ P( r8 N6 y0 F; R4 u, M/ q
    组件2:`matplotlib FigureCanvas for qtwidget`
    + O' R3 m4 Q6 f8 A. f组件3:`pyqtgraph`
      R! Q0 z- D% x0 \在Pyside2中嵌入其他ui组件:增加组件到pages中,在develop分支中开发
    1 D! X( `+ u+ Q8 o& ^以下组件部分测试测试参考:6 v0 ^) ]; K9 p1 B0 |& O

    + R8 U0 n, A/ e; H1 S参考的B站视频& O7 S6 ~& z, J' w- N9 x
    qtconsole 官方文档:The Qt Console for Jupyter  @5 t6 |/ B% A1 `& J
    组件1:jupyter qtconsole
      c3 D( h: }2 Y! ^1、安装 qtconsole 库, 经测试发现,该库目前不支持 pyside6, 所以更改解释器环境到 pyqt5 or pyside2- n# _1 t7 z9 Z
        pip install qtconsole -i  https://pypi.tuna.tsinghua.edu.cn/simple; M. ^& A: W5 u/ ^9 c, J5 t
    1$ \3 _6 ]3 W$ i2 S
    2、尝试启动
    3 A0 Z4 r4 A8 F* s1 ?   jupyter qtconsole2 A, p8 u% Z# I) p4 O
    16 e4 u3 V  x4 k% g3 N- K( z
    & [5 G1 ~# r7 t  {8 }) e
    / N1 M2 c' a7 i6 {$ S$ L! x1 k
    3、尝试嵌入组件到pyside2 ui中% I# [4 U. g9 O( R; W! b' ~7 w0 T

    % |3 W0 X! E' ?# B( l3 m$ N3.1、复制参考的py代码 consolewidget.py 到 gui.widgets 文件目录下
    : x& @5 P8 Y0 O, j2 P3 M% O5 w: j1 r/ U% U1 ~
    3.2、在Qt Designer 使用 Widget(基类/父类) promote to ConsoleWidget,并修改对象名称,操作如下图:0 [; d( w2 _/ s" B
    # u( {! W$ g# ?# O/ m! f5 _
    6 t  \. d( u% L1 @
    3.3、ui显示样式修改1: widget 样式表  G8 D* @) V8 i2 w# p- c

    4 f- h& u' h  c( N/*设置父类窗体,背景边框等属性*/
    4 U$ v/ O* ]; [QWidget {3 M5 Z, ?/ J* [5 D# C
            background-color: rgb(33, 35, 45);
    / K6 t+ n6 l+ K% H2 W        padding: 8px;# I) j" R. h  `  {) D5 \! ]% `
            border: 2px solid #c3ccdf;
    7 e5 f1 W2 w+ B) ^' t        color: rgb(255, 255, 255);
    / r$ t1 S; H* b6 t  ]* g) d% P) `        border-radius: 10px;, g: }& P& t% `8 e& Y! z$ z
    }
    % H* m$ C2 b9 e) G$ E1: `, f) [; U& a5 B
    2
    ( h$ V- F! E  k3
    + Q5 @7 L  o- T9 H6 P  e42 L  l2 L) i2 i- E
    5/ B! B1 `/ s, F  A/ I" Q
    6$ Y" O& t# _, A
    7
    $ f8 q: G. {: Z, V3 }8: V+ y" T' A6 x4 ~* s
    3.4、ui显示样式修改2:qtconsole启动界面风格指定% `; e5 q8 P. z. E9 ]
        self.set_default_style('linux')4 O& K4 V% K6 O# c
    1
    8 c& x* o8 F- K& `3.5、该窗口的实例化在uic自动生成的代码中4 e9 z) j/ H' q: u
        self.ConsoleWidget = ConsoleWidget(self.frame_2)
    * K7 |) P: j! m2 l) y( d    self.ConsoleWidget.setObjectName(u"ConsoleWidget")) _6 p( K" H. M
    19 Z7 T5 T. g; y+ W$ x' H  E' i
    2) ]$ ?4 j# q7 @* ^! {# X; I! K3 j
    3.6、运行效果
    ( k' j. H7 F$ m* Y+ A4 O9 n( j
    % U4 Q5 q$ v' n7 a& b组件2:matplotlib FigureCanvas for qtwidget
    / i( b5 q5 i/ H1、安装相关库, 指定清华源
    # p0 E( B. @3 `1 \* |- t    pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple8 D% ~6 ?$ K! m
        pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
    0 Y7 a  d4 x! y5 X. L    pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
    ( A+ u! v8 z4 e' m: P% e1& j/ Q( p# r% T& \+ e
    2
    ; \' W, a# a* U8 j! o, f3
    & f+ ~+ j% ^% w% @youtube 参考视频+ S5 E- s4 C: n. S! C, J% W
    网站教程
    ! J& }' `, @, A" gyoutube 参考视频: 不同主题风格调整方法,导入csv数据显示
      T! w! \$ K! e9 C& U$ w1 C; u1 X2、 复制 MplWidget.py 文件到 gui/widget 目录下
    4 `! y7 y4 L# X5 ?* u3、测试 animation, Plotting Live Data in Real-Time
    & A/ Z0 q5 b5 r, D9 A1 [
    2 T' `0 Q4 M0 f测试方法:plot_live_data(); a7 h" Q3 w. s
    个人理解,animation 应该就是定义了一个与UI同线程的定时器。
    # _# f( J" S; D2 T9 Q% P组件3:pyqtgraph$ o8 ~1 t  N) v4 l' K
    参考视频16 @9 O' X+ i! j; ~  q) I
    参考视频2et’s Build an Audio Spectrum Analyzer in Python! (pt. 3) Switching to PyQtGraph
    ( _1 H% Y$ U+ t# w
    ) e) u) I4 p$ _" ?8 S1、安装相关库, 指定清华源
    4 E: ^$ V7 w) k/ k9 B    pip install pyqtgraph -i https://pypi.tuna.tsinghua.edu.cn/simple0 R4 w& J! F$ O2 B8 M
    19 n7 e# T; U& D" A
    2、在 gui\widgets 目录中增加 pyqtgraph_test.py文件
    8 [5 Q2 H- [2 u: A增加 2个按钮(draw, clear) 和 1个pygtgraph窗口控件(PlotWidget) 布局
    # }. ]. M8 L# H2 k定义刷新时间,帧率,每隔通道的数据记录最大长度等概念  m0 z8 d. p+ {0 e3 c
    注意,每个点之间的采样时间实时性不是QTimer能保证的。
    . k! C  W' |" `3 v% d1 y还需要想清楚如何保证准确的采样时间,以及与数据刷新时间间隔之间的关系。(参考已有的scope的习惯)
    9 j, j! q. n' e" T0 t2 @2 ?: O. u使用 QTimer 定时器, 实现动态刷新的功能, 60FPS -> 定时器时间间隔设定为 1000/60ms  Q4 G6 E8 k9 p1 {/ {
    调用 self.graphicsView.plot(self.y_vals) 绘图,但注意,重复调用相当于创建多个通道的曲线。如果只想显示一个通道的曲线,有2种方式7 p, l/ ]# x4 B: o* n2 S5 T
    方式1:在 plot() 方法前,调用 clear() 方法
    ' W" k/ w5 j. {: s$ C! S方式2:使用 self.graphicsView.plot.setData() 方法刷新数据,对应的数据清除方法也改一下,改成setData([])+ }& T( V" U7 c$ ~
    3、参考 Audio Spectrum Analyzer 代码,优化多通道显示刷新方式6 G. F3 t' l$ ]2 R2 B- |
    源工程运行前,需要安装的库,pyaudio使用pip安装会失败,使用管理员模式启用conda终端安装. v8 a. n* f) J- }* c  x6 I; t; x+ H
       pip install opensimplex -i https://pypi.tuna.tsinghua.edu.cn/simple
    6 W& l. m" W; \, C2 ]   conda install pyaudio -i https://pypi.tuna.tsinghua.edu.cn/simple% U* o" @# S9 u+ a0 r/ P( F7 x8 o' J
    1
    + C, e* [: Q: ~. K  q8 O& o! V23 Y: ]- Q' ^  F: Q4 o
    参考 self.traces = {}、set_plotdata() 数据结构和方法,优化多通道显示逻辑, F& y" O& y0 H; J9 d
    5 k7 b) A6 n: \& z  s( W
    右键RUN pyqtgraph_test.py,效果如下:- c+ M5 G! \% z, ]( ~
    8 s5 v" Q$ [4 x3 |

    * z# j5 S5 {& y4 a* @2 ~文章知识点与官方知识档案匹配,可进一步学习相关知识
    0 N" e& [9 N( O6 ]3 \3 Y8 {————————————————7 V( o/ X' l" V4 k* N$ ]' I
    版权声明:本文为CSDN博主「HUIJIANG123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。) \7 o9 W5 B3 m" U3 X6 K
    原文链接:https://blog.csdn.net/u012928587/article/details/1245472308 v" R6 s( i- c( k, n

    . Z  t5 }& O  y9 r* n' ~* q1 z! L' F' T9 Z
    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-21 19:38 , Processed in 0.403484 second(s), 51 queries .

    回顶部