QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2380|回复: 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
    6 j; Y: b4 v( k& i
    Python UI设计学习笔记,在学习的UI框架中嵌入其他ui组件:增加组件到主画面的pages中$ W: c7 e, G5 n0 L+ k; D/ B

    " I! d7 }1 `) d. h$ @+ W  r- `( A1 n! O0 C1 p* O
    文章目录
    6 ]3 h/ Z9 ?  R; r" Y在Pyside2中嵌入其他ui组件:增加组件到`pages`中,在`develop`分支中开发
    8 u, q6 J3 n% a9 N. `) c% |组件1:`jupyter qtconsole`
    / V8 ~  Z6 K: j$ [6 m! b8 e5 ?组件2:`matplotlib FigureCanvas for qtwidget`
    9 V0 f8 N; |+ [) N3 _6 L$ r组件3:`pyqtgraph`6 M1 D" k2 Y. h! r4 z4 P: c1 i
    在Pyside2中嵌入其他ui组件:增加组件到pages中,在develop分支中开发
    & H! ~: D5 K+ X. T5 q) h以下组件部分测试测试参考:
    ! b9 [( Y4 @& \, p# [' W$ z1 R
    5 ^- X& q4 p* w$ R* ?参考的B站视频
    ' F/ D, ^2 I! D& H0 B' Nqtconsole 官方文档:The Qt Console for Jupyter' b; s2 q. t+ y3 @3 q: D6 i) P0 h
    组件1:jupyter qtconsole
    2 T9 a# c- C# t& L1、安装 qtconsole 库, 经测试发现,该库目前不支持 pyside6, 所以更改解释器环境到 pyqt5 or pyside2
    ' z- ]. I' {$ x) ^    pip install qtconsole -i  https://pypi.tuna.tsinghua.edu.cn/simple
    , z8 D6 x/ z' K  O1& Y1 k! ^' H8 z7 Y- t/ S2 [  K
    2、尝试启动
      Z, f; a* R( R: |: z6 t; P9 ~: j   jupyter qtconsole9 ?7 L4 H9 b# s, Z4 l" _
    1: L: ?. Y9 i# J
    % Q' d- _' E2 `* e4 }3 D5 M: ~
    ! R, ~8 i9 u8 T0 E: [# }
    3、尝试嵌入组件到pyside2 ui中
    * K, u: D0 R- C" A/ Q6 i; n; R' [  h" W! ^" v2 Q& x# b: x' b3 V6 W$ d
    3.1、复制参考的py代码 consolewidget.py 到 gui.widgets 文件目录下9 J1 X$ l/ Y/ M! H! n  v$ B; W

    , t/ _7 {$ P' h- r  }$ @3.2、在Qt Designer 使用 Widget(基类/父类) promote to ConsoleWidget,并修改对象名称,操作如下图:: b1 ~5 O/ o& c; @2 n
    ! }+ X; d2 v9 D( Y

    " ~9 }+ D# y- p  e  ?3.3、ui显示样式修改1: widget 样式表
    2 O, {- \+ l7 I/ u1 W9 @6 f
    " C/ u2 Y1 B) N# B/*设置父类窗体,背景边框等属性*/! i4 y3 k  W7 e" S8 s3 n9 F
    QWidget {; j# ~0 p. ~( o8 P, R  n2 Q
            background-color: rgb(33, 35, 45);  B$ R  F8 |+ R5 S% J0 H# ?* ?+ f
            padding: 8px;- }; }1 F4 [2 S" o" l4 n
            border: 2px solid #c3ccdf;
    ; B+ S3 Y- t" e$ C, W5 P        color: rgb(255, 255, 255);
    $ \" S$ ?# S) m7 u$ ^6 M& \        border-radius: 10px;
      a# P1 d% X/ d6 d& D. ?$ C, s}$ Z" \# g- ?: v& E1 p# g( _
    1" \3 f; _  `* \  X" o+ @7 ]3 @+ ^
    2, `! O0 n  v; g4 i
    3
    ! {+ R5 L( B# {3 b) g( j4
    ) x" z# u- e+ R1 P0 W52 x; [9 O7 b6 K$ m& [9 @* }; |* |
    66 S. ]# v: f' H  u7 q- M! L
    7
    2 |. y$ H, h+ s" g8 z8
    ) Y; ]% m5 b) n0 C. x! b3.4、ui显示样式修改2:qtconsole启动界面风格指定8 G* \$ F# n! Y" |
        self.set_default_style('linux')5 X1 h8 t3 j$ V! O0 C5 r$ ~9 c
    1
    ( @7 x! S2 q3 x/ H! A( V7 }" D: u3.5、该窗口的实例化在uic自动生成的代码中9 {) V# \, _4 [  U
        self.ConsoleWidget = ConsoleWidget(self.frame_2)
    8 g- N/ O0 e) @2 Y    self.ConsoleWidget.setObjectName(u"ConsoleWidget")
    : _8 Z; ~1 C; \, y2 u1) ^3 S; x8 F, `
    2
    $ i5 ?( h% d7 @0 K3.6、运行效果
    - y/ l1 U4 m1 Q9 L+ V1 {3 g; v) S
    / Y- @6 D6 `: j3 V% r) e# k6 M  \' s1 Q组件2:matplotlib FigureCanvas for qtwidget
      C. }/ O2 w& Y4 r. _- W( c1、安装相关库, 指定清华源& \! {- a; K- U" w- A
        pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
    4 h7 h4 }9 K9 V$ a' W8 s5 m7 @* h    pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple5 Q6 G4 D4 h# q. b# ]* O4 y$ f
        pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple* Q& o0 P( w; y6 Z- d- e  S8 C  k
    1
    7 _3 x6 S6 Z! l4 w2; q* `" H- [/ _3 B* m1 |  a$ Z
    39 d- B$ C) |, j
    youtube 参考视频
    ) w" n3 u2 H3 R网站教程7 m* R* R# W5 w9 F' M! [3 ?9 g
    youtube 参考视频: 不同主题风格调整方法,导入csv数据显示2 V* \5 K8 S' ?* S* c
    2、 复制 MplWidget.py 文件到 gui/widget 目录下! C, Y- h( O7 o3 X
    3、测试 animation, Plotting Live Data in Real-Time( R4 M: a( A; {5 J9 W
    0 \/ L) Q* ]3 F: g0 B7 a
    测试方法:plot_live_data()
    1 {( p. _2 B& ?; \个人理解,animation 应该就是定义了一个与UI同线程的定时器。
    ; E) E6 \* f. F% e; t1 h8 Y" P组件3:pyqtgraph
    ; [0 v# v' @" [% a参考视频1
    # f' s# l5 Q. c参考视频2et’s Build an Audio Spectrum Analyzer in Python! (pt. 3) Switching to PyQtGraph. w0 o8 S" a2 R/ H- X# ^( l

    ; q' ?0 y$ b5 p& C) T# m3 Z1、安装相关库, 指定清华源7 O7 I: @% S2 O( p
        pip install pyqtgraph -i https://pypi.tuna.tsinghua.edu.cn/simple; Z2 T1 Q% s: D
    1  T7 G; I4 Q! i$ S7 d
    2、在 gui\widgets 目录中增加 pyqtgraph_test.py文件3 ^# N6 O9 ^6 A" l# }$ h
    增加 2个按钮(draw, clear) 和 1个pygtgraph窗口控件(PlotWidget) 布局) K; b+ f; E- L' G; ?
    定义刷新时间,帧率,每隔通道的数据记录最大长度等概念: o8 h* `; U' R- h5 c2 A2 k
    注意,每个点之间的采样时间实时性不是QTimer能保证的。
    ! I$ L) ~: Z( `6 ?( ?还需要想清楚如何保证准确的采样时间,以及与数据刷新时间间隔之间的关系。(参考已有的scope的习惯)$ t" Y' K1 b4 k1 Z1 U+ S. w4 b, i
    使用 QTimer 定时器, 实现动态刷新的功能, 60FPS -> 定时器时间间隔设定为 1000/60ms* _8 H6 ?+ f& n
    调用 self.graphicsView.plot(self.y_vals) 绘图,但注意,重复调用相当于创建多个通道的曲线。如果只想显示一个通道的曲线,有2种方式
    1 a" M) r' k" o5 S7 w方式1:在 plot() 方法前,调用 clear() 方法( ^, c  R0 a9 F) g: a# j3 V
    方式2:使用 self.graphicsView.plot.setData() 方法刷新数据,对应的数据清除方法也改一下,改成setData([])+ c0 I  Q7 t4 r0 H# b
    3、参考 Audio Spectrum Analyzer 代码,优化多通道显示刷新方式* Z) r6 n/ G, z9 Q
    源工程运行前,需要安装的库,pyaudio使用pip安装会失败,使用管理员模式启用conda终端安装& _8 N! f& b& q1 R6 w; e" N& c
       pip install opensimplex -i https://pypi.tuna.tsinghua.edu.cn/simple1 |" \+ O7 C/ @% ~1 t
       conda install pyaudio -i https://pypi.tuna.tsinghua.edu.cn/simple
    3 ?+ g& _* |/ u  l, q2 e9 X1
    ' g4 f8 e) a+ ^" Y2, e5 h: y# V, l) g9 X
    参考 self.traces = {}、set_plotdata() 数据结构和方法,优化多通道显示逻辑
    / Y- c+ w+ c$ @, e' j% d( q2 f  }0 [, P! K, _; m9 y- z' G
    右键RUN pyqtgraph_test.py,效果如下:: L  ]2 B; v0 V  }
    0 j6 ]5 \% G+ p$ I
      N2 I: }+ h2 W  M$ m  }
    文章知识点与官方知识档案匹配,可进一步学习相关知识
    2 B8 G0 }) v8 `2 @9 v" {# b1 Z————————————————
    1 o' X) |1 D  i* o% h# q/ ~版权声明:本文为CSDN博主「HUIJIANG123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。+ |- T3 t- P$ y, E, `- x/ P
    原文链接:https://blog.csdn.net/u012928587/article/details/1245472300 V3 Z. h; |, f" D, \
    ( G" L3 g5 j3 S& \  X* U
    % S2 H" d  b- Z( I! f1 ]) ?
    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-9-24 17:26 , Processed in 0.531854 second(s), 51 queries .

    回顶部