QQ登录

只需要一步,快速开始

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

    3 S! F+ e( H' I% ]Python UI设计学习笔记,在学习的UI框架中嵌入其他ui组件:增加组件到主画面的pages中: I; f$ H' |, R2 C
    & ^4 M* Z& X) t* N' ^- `

    # k  `" N# J6 z. R- R文章目录
    # h, D" o- T1 d( T0 s: @/ M0 Q$ ]在Pyside2中嵌入其他ui组件:增加组件到`pages`中,在`develop`分支中开发/ ^6 Y+ u6 R! `. N
    组件1:`jupyter qtconsole`8 D. o% ?% m' M! Y& @1 N
    组件2:`matplotlib FigureCanvas for qtwidget`
    % `0 F$ w- y/ n9 ~2 Z组件3:`pyqtgraph`
    + a2 u1 v. X" w在Pyside2中嵌入其他ui组件:增加组件到pages中,在develop分支中开发
    * ~1 }3 ~# L/ {, e) P! g6 U以下组件部分测试测试参考:
    . j( ^5 y& w3 N3 k! _) A  {7 o3 {; b+ Y( U- M4 d. E
    参考的B站视频" m0 \* E% p' X+ w9 [1 S/ o9 Z1 X
    qtconsole 官方文档:The Qt Console for Jupyter
    5 ?% c. r& p& N+ g5 _$ D! x组件1:jupyter qtconsole  }  [# q. `2 P( _4 s# M
    1、安装 qtconsole 库, 经测试发现,该库目前不支持 pyside6, 所以更改解释器环境到 pyqt5 or pyside2
    0 \4 e- g6 S* ~' G    pip install qtconsole -i  https://pypi.tuna.tsinghua.edu.cn/simple
    & M% M" |- V) C  ]2 G1) H; L0 W7 n0 Z% l
    2、尝试启动& ^7 F( V( b) C
       jupyter qtconsole
    : D3 s: y7 o, L/ t% Y! q. z1. D8 s( r+ F5 N( ]( c. x% S5 B
    5 f9 D1 l% _$ d7 n" X1 |- k  `/ E
    ; i2 j1 N, [! ?) U  l6 C! }
    3、尝试嵌入组件到pyside2 ui中& s- |: s6 ?# H9 \7 g$ V9 Y8 @

    ( g1 I: J5 N" {6 d( d, Z3.1、复制参考的py代码 consolewidget.py 到 gui.widgets 文件目录下3 P! `& v/ V4 y! g

    7 f4 |; h5 B+ s1 b4 F3.2、在Qt Designer 使用 Widget(基类/父类) promote to ConsoleWidget,并修改对象名称,操作如下图:
    % `% A# s# `: m
    6 g$ ~( M) B1 v+ w5 D/ p
    ! I2 m- O- a1 M4 ]; H; r$ K' `3.3、ui显示样式修改1: widget 样式表/ }! u/ E! T# v& U! G
    $ U3 ]! ~* j) X( q/ ]# a
    /*设置父类窗体,背景边框等属性*/
    3 G$ L2 u( q& n) E, G9 b# BQWidget {( z# F+ E/ ^7 {5 G4 A
            background-color: rgb(33, 35, 45);
    3 C) t# k8 l/ A2 v- ]4 {        padding: 8px;9 A! u" k" }( e: u, j0 k8 ~
            border: 2px solid #c3ccdf;
    3 n3 G- h# L: A) B; @% b        color: rgb(255, 255, 255);
    0 U' R  Q6 T9 {+ m4 S  [        border-radius: 10px;
    . w$ \& V$ h( F) `" g}
    ) a( ]- r8 C% N, A' V1
    % s9 N; }, @# r1 E" ]( a2
    , ]8 |. X0 \; J5 q3
    1 c( h( l/ ~7 f9 U  a% ]41 c( T" a0 N" n
    5( N4 X- s- L, B6 w
    6
    7 ~. v% R0 N6 G5 c% u0 [; y7
    # F1 N5 X; u6 ?' n8
    " @0 W9 J  Y* b# H+ Y# o; d  }3.4、ui显示样式修改2:qtconsole启动界面风格指定
    ) T+ `1 Y. _; Y1 T5 h7 b8 q( u; A    self.set_default_style('linux')
    * P' S8 J$ W) q1
    3 ^/ B" W! K2 P0 P9 t3.5、该窗口的实例化在uic自动生成的代码中, ?( ^# A# j, D! l
        self.ConsoleWidget = ConsoleWidget(self.frame_2)
    9 l, ~3 `4 T7 ~2 d    self.ConsoleWidget.setObjectName(u"ConsoleWidget"), h  U7 d4 P9 }% Y- s4 y* i" I5 I
    1
    4 ]6 i5 k: q6 C7 [, Q21 X, N% N' M* b, f/ m+ @
    3.6、运行效果3 m+ Q  w( i- P! M! W

    3 M; Z" W& Y: U) \, I* K- \. b, x组件2:matplotlib FigureCanvas for qtwidget
    , J3 s0 e: ^7 R1 G0 {- P1、安装相关库, 指定清华源+ n+ k, R; M/ k1 D
        pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
    ; p2 \+ Z+ e+ ~    pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
    ! A3 y; q! p8 b' H2 W4 i- A    pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple. Y, w! g. N% w) h' X% T( ?: R
    1+ E/ o2 R! S- {4 d6 T
    2
    - z1 \! \0 ^9 @; p) w0 n5 p; c3
    " }" l1 U* d6 N! }0 d* Fyoutube 参考视频
    ! E: A8 ^* \0 {. \7 i& |网站教程
    " f0 @4 s, M# o4 Kyoutube 参考视频: 不同主题风格调整方法,导入csv数据显示
    9 J# I( W& d) s; y: P2、 复制 MplWidget.py 文件到 gui/widget 目录下* ^& T+ D, r% L6 @# Q  z
    3、测试 animation, Plotting Live Data in Real-Time
    * [0 |) |; x$ O$ a! s! k! n, U. q7 R  z/ w4 k+ J, v) W
    测试方法:plot_live_data()
    - O. s$ s( |  g6 {5 c) x" {个人理解,animation 应该就是定义了一个与UI同线程的定时器。
    7 |; x* Q5 _% z! A' P组件3:pyqtgraph
    * J4 r" d, R* h  ?参考视频13 Z/ p/ F2 T. D0 N
    参考视频2et’s Build an Audio Spectrum Analyzer in Python! (pt. 3) Switching to PyQtGraph+ r, h8 |# h& ^% r. u
      V% k8 A( h! p/ v/ t  _, c4 u: j
    1、安装相关库, 指定清华源+ j+ f2 K3 K/ U% J- Q2 [
        pip install pyqtgraph -i https://pypi.tuna.tsinghua.edu.cn/simple: A: L5 S, |' N
    1
    " `/ @/ a* @+ k' [; W9 b2 m2、在 gui\widgets 目录中增加 pyqtgraph_test.py文件
    3 s& w. d/ R, A6 k% A) j( `7 e增加 2个按钮(draw, clear) 和 1个pygtgraph窗口控件(PlotWidget) 布局, n' Q% ~* }0 o9 H: D9 n( p8 d% _
    定义刷新时间,帧率,每隔通道的数据记录最大长度等概念( E7 A1 `1 a+ r& L: {- ]
    注意,每个点之间的采样时间实时性不是QTimer能保证的。) q6 g3 g5 W& o% r
    还需要想清楚如何保证准确的采样时间,以及与数据刷新时间间隔之间的关系。(参考已有的scope的习惯)
    & m3 W7 L' ]& @. |& e! l. M' ^  K. J使用 QTimer 定时器, 实现动态刷新的功能, 60FPS -> 定时器时间间隔设定为 1000/60ms5 s( f5 c0 o2 A+ @5 Y  `
    调用 self.graphicsView.plot(self.y_vals) 绘图,但注意,重复调用相当于创建多个通道的曲线。如果只想显示一个通道的曲线,有2种方式
    & V! h% i& E5 U% Y  K# ^9 `. }方式1:在 plot() 方法前,调用 clear() 方法1 s! }- y' O+ j# u' z. I" O
    方式2:使用 self.graphicsView.plot.setData() 方法刷新数据,对应的数据清除方法也改一下,改成setData([])8 t0 L2 Z: V7 f. F" U2 p: n+ V$ r; g% r
    3、参考 Audio Spectrum Analyzer 代码,优化多通道显示刷新方式4 t) D8 d/ G& f6 u
    源工程运行前,需要安装的库,pyaudio使用pip安装会失败,使用管理员模式启用conda终端安装* z; r8 U( q" K
       pip install opensimplex -i https://pypi.tuna.tsinghua.edu.cn/simple
    7 s, T& _0 [3 r' y$ W2 C1 g. @3 Q   conda install pyaudio -i https://pypi.tuna.tsinghua.edu.cn/simple
    # r* s: ]$ b: F/ n" p1' w. }3 g- K0 O# u2 a  Y! F
    24 k! `$ D% m4 z* w+ k3 u
    参考 self.traces = {}、set_plotdata() 数据结构和方法,优化多通道显示逻辑9 O! x6 l" i! \9 E, T6 c

    9 H) t' }: w. ^$ U; [右键RUN pyqtgraph_test.py,效果如下:! b1 g* |( T, C

    8 j0 z! {) O4 g& v" C1 L  ^
    / I. T5 x7 I& T8 N文章知识点与官方知识档案匹配,可进一步学习相关知识; U3 F- q- w6 l9 S6 }  k- `! \
    ————————————————7 ~5 ~/ a5 }! |8 ~! h2 a" y
    版权声明:本文为CSDN博主「HUIJIANG123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。# \. l' C% _8 @) z
    原文链接:https://blog.csdn.net/u012928587/article/details/124547230
    6 |* W: v: l; \+ |
    6 l6 U) Y- v& j% X+ f. P3 m5 B$ ]1 i' x0 ^0 q- U' s& s/ Q$ D4 v& k4 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-17 04:59 , Processed in 0.422821 second(s), 51 queries .

    回顶部