QQ登录

只需要一步,快速开始

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

    5 ~- M4 l. S8 [Python UI设计学习笔记,在学习的UI框架中嵌入其他ui组件:增加组件到主画面的pages中
    9 y! |0 O  a, F$ ]2 A
    : O6 r9 W* s8 f: m- h& d* N! q: l+ D% o1 @0 j) R+ P1 j8 Q
    文章目录- C0 A- s0 v5 H9 |0 R$ Q' S
    在Pyside2中嵌入其他ui组件:增加组件到`pages`中,在`develop`分支中开发
    8 k8 L" m3 m5 b5 U4 y7 |% z1 C组件1:`jupyter qtconsole`. A: d. q4 P5 w- m" T; D5 I' M
    组件2:`matplotlib FigureCanvas for qtwidget`
    1 X4 }; ?( K. p' m& C组件3:`pyqtgraph`5 \% l3 l4 v1 b
    在Pyside2中嵌入其他ui组件:增加组件到pages中,在develop分支中开发
    2 t5 V7 a- o0 b! u2 I" M3 S以下组件部分测试测试参考:; B% d& O: B) n3 }' O" t0 L

    + i# X' {# a9 l; [% b: ^3 K参考的B站视频
    9 }1 K1 r9 B+ xqtconsole 官方文档:The Qt Console for Jupyter
    $ u1 @1 k7 j* M" V组件1:jupyter qtconsole
    # Y: c" c8 ^) w1 C5 M+ J( Q1、安装 qtconsole 库, 经测试发现,该库目前不支持 pyside6, 所以更改解释器环境到 pyqt5 or pyside2* j, ]7 ?# R6 i# a
        pip install qtconsole -i  https://pypi.tuna.tsinghua.edu.cn/simple
    7 M4 E6 c5 B, i. n1 T1
    $ Q$ S+ d6 |- a, ?! G2、尝试启动0 E* u5 Y/ j; _! V7 l3 a
       jupyter qtconsole
    2 J) b4 J+ X" X- V" z19 X5 m5 o6 b2 m& D
    4 E! f( F0 X5 i
    . q/ z; w* E) \- p8 }2 l
    3、尝试嵌入组件到pyside2 ui中
    # h( Y. I, Y7 j: ]5 V3 D* l7 \7 L& ~6 J3 s; G
    3.1、复制参考的py代码 consolewidget.py 到 gui.widgets 文件目录下3 T7 E! ~* [0 w: R9 i& T
    8 X. y9 U% n9 b- Y8 J' k
    3.2、在Qt Designer 使用 Widget(基类/父类) promote to ConsoleWidget,并修改对象名称,操作如下图:
    , O  [* ~' H1 |6 m& m4 H9 w6 V4 N( f5 g: _) y8 ?

    + p3 H" O; W2 j3.3、ui显示样式修改1: widget 样式表) l5 c4 I8 @9 ~6 f7 T, ?1 h% o% k

    8 y& g$ `$ w. H' P4 B4 u' o/*设置父类窗体,背景边框等属性*/. c5 }9 M1 t$ P
    QWidget {
    6 n! m* X2 M5 F; O9 f        background-color: rgb(33, 35, 45);
    , T  l1 E6 o7 ~3 e. S4 r        padding: 8px;
    3 ~: g' G0 \, \+ W# h8 o  x) j' \        border: 2px solid #c3ccdf;
    . m4 j) K" X' H6 U* W8 C0 N0 J        color: rgb(255, 255, 255);4 \( b! l2 I6 y  r8 [6 Q5 y
            border-radius: 10px;4 H( U% w3 F7 S5 e6 n3 X6 v; J
    }
    , n  l, c4 L$ k2 R% Q: l1
    ' L& p9 f; n1 w8 R3 q2
    9 ]0 D4 Y' w4 G( a0 d0 d0 G. k- |3' L- \0 A( x/ c5 T* b7 ]' b
    4
    6 ?  }1 ]& n. w1 h  B7 r  ~5
    ( z+ O; }0 s8 k0 p6 M# r6
    - o* l5 P+ p0 I; a" D  t7  P6 |7 H6 l2 T5 @! h
    8% f1 f9 I' y- K4 y
    3.4、ui显示样式修改2:qtconsole启动界面风格指定
    0 a0 o, e+ }0 S3 U1 ^0 ]    self.set_default_style('linux')
    / h1 ^9 u8 v% ]7 S17 P$ R: l5 b2 E# h1 a/ f: P( x9 y
    3.5、该窗口的实例化在uic自动生成的代码中
    1 j" d( H) O- e& |    self.ConsoleWidget = ConsoleWidget(self.frame_2)
    7 o/ u$ |( f3 @/ L/ {    self.ConsoleWidget.setObjectName(u"ConsoleWidget"); Y/ _6 `! t- L5 O6 Z9 H8 ]
    1
    ' R% Y: @1 F" c# c2
    + P9 G4 f! E, W8 L3.6、运行效果% v6 X9 E% s) ^! \
    ( G, c; W6 |4 x% i7 E
    组件2:matplotlib FigureCanvas for qtwidget
    7 `, q8 i5 [0 w! G0 G1、安装相关库, 指定清华源
    2 c8 z2 z3 ^5 B0 w9 {    pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
    9 C  \) D( N8 w, Y( T0 `    pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
    2 M4 u: ]* Z- n" \" P    pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
    6 s9 M6 B; \1 S  K1
    ! n3 ~+ M& I/ t2
    + e0 o( N& s# R3$ ~; i& S, H6 j9 P5 u/ X4 s
    youtube 参考视频
    9 g9 K9 [2 E: A% c$ G0 `网站教程
    , W6 g' x9 G; d: gyoutube 参考视频: 不同主题风格调整方法,导入csv数据显示
    + ]9 L5 W. s- T2、 复制 MplWidget.py 文件到 gui/widget 目录下: y3 P' R. ^4 L+ Q, }8 `3 a
    3、测试 animation, Plotting Live Data in Real-Time
    + s; b' a4 I' H3 ~( W; B
    + d: }8 P! j3 z& ]% K( p测试方法:plot_live_data()4 I0 f2 f1 K  t1 E7 M) `" G
    个人理解,animation 应该就是定义了一个与UI同线程的定时器。
    " r' [( ~6 `9 `; G1 Z组件3:pyqtgraph
    / O% R5 i( t" n! X! w& f! e参考视频15 Q4 F) i. u( U1 B  z6 J2 p3 Z' r
    参考视频2et’s Build an Audio Spectrum Analyzer in Python! (pt. 3) Switching to PyQtGraph
    ; U  K0 z3 s& i9 j! A1 K% M% E, _( y  `1 b! ^
    1、安装相关库, 指定清华源
    2 a; [( Y1 U+ @2 N' W    pip install pyqtgraph -i https://pypi.tuna.tsinghua.edu.cn/simple; v  o& L8 f  z/ ]/ i
    1
    9 h  ^6 p5 a( \1 n2、在 gui\widgets 目录中增加 pyqtgraph_test.py文件% K4 ?/ d( L! h3 N' b
    增加 2个按钮(draw, clear) 和 1个pygtgraph窗口控件(PlotWidget) 布局
    3 c1 x  N' ]+ y+ Q" e定义刷新时间,帧率,每隔通道的数据记录最大长度等概念* ?3 i8 J# {- V4 A& M. h
    注意,每个点之间的采样时间实时性不是QTimer能保证的。
    , M' V4 D6 v; b" [还需要想清楚如何保证准确的采样时间,以及与数据刷新时间间隔之间的关系。(参考已有的scope的习惯)
    3 V1 @0 l$ i2 M! r' y6 p使用 QTimer 定时器, 实现动态刷新的功能, 60FPS -> 定时器时间间隔设定为 1000/60ms
    ) \8 z" g3 |8 _8 O6 L; i) ~$ n( w调用 self.graphicsView.plot(self.y_vals) 绘图,但注意,重复调用相当于创建多个通道的曲线。如果只想显示一个通道的曲线,有2种方式
    # p$ e& M$ ~7 M( r方式1:在 plot() 方法前,调用 clear() 方法
      d& z0 q" E+ R3 ~/ _方式2:使用 self.graphicsView.plot.setData() 方法刷新数据,对应的数据清除方法也改一下,改成setData([])
      {+ g& M4 V5 |* @" K  `" a- U3、参考 Audio Spectrum Analyzer 代码,优化多通道显示刷新方式
    ( s+ H; u1 T# G0 i& Y; |- w源工程运行前,需要安装的库,pyaudio使用pip安装会失败,使用管理员模式启用conda终端安装
    6 K; H- L. a9 l( C: M9 m& g   pip install opensimplex -i https://pypi.tuna.tsinghua.edu.cn/simple
    6 ~( |( P; A. x   conda install pyaudio -i https://pypi.tuna.tsinghua.edu.cn/simple
    - {; ?+ D6 S! t1 x+ E& A1
    ) g2 S  h- x: N0 M, ?( P23 `% k2 D+ c0 \9 |+ Y
    参考 self.traces = {}、set_plotdata() 数据结构和方法,优化多通道显示逻辑  w& @$ j9 y* A* h
    , |6 r/ M  d5 }0 F2 E
    右键RUN pyqtgraph_test.py,效果如下:
    . D1 {; H0 c) m! `- E& f+ C  O1 v5 u% l8 n' @0 c8 M7 V( n+ X

    - o' H" n9 j: P+ D" n4 \" A- ^& v文章知识点与官方知识档案匹配,可进一步学习相关知识" h6 x! @% o5 f' F% C" D
    ————————————————
    - g  [7 d* K, ]" K. X5 O8 V版权声明:本文为CSDN博主「HUIJIANG123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。9 |( H( `* t3 n0 `0 ]2 U
    原文链接:https://blog.csdn.net/u012928587/article/details/124547230! Y' P7 n2 R0 C  G2 Z) x
    6 M6 s' c/ z- l. U7 N* w6 t' [
    $ b( A( f( b. T( `. j4 `
    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-14 02:26 , Processed in 0.446089 second(s), 52 queries .

    回顶部