QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2338|回复: 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
      U; g& u- O9 c& |% ]0 q6 _5 `
    Python UI设计学习笔记,在学习的UI框架中嵌入其他ui组件:增加组件到主画面的pages中
    3 m: I3 u, l) R& W& W4 L3 z! H2 T- y* j' @9 o0 R! r
    3 u: o5 l& Z% k# b. z% `! C
    文章目录. ~3 b# G: ], a7 q! p3 ]
    在Pyside2中嵌入其他ui组件:增加组件到`pages`中,在`develop`分支中开发9 h) Y) L" R% h  J, O
    组件1:`jupyter qtconsole`
    & I" s, Y  L% t" a, [组件2:`matplotlib FigureCanvas for qtwidget`8 G  k2 u0 |+ V5 ~
    组件3:`pyqtgraph`
    # b' j5 S1 s5 F. B. N( u在Pyside2中嵌入其他ui组件:增加组件到pages中,在develop分支中开发
    7 x& H4 t1 p2 I7 O$ U# x7 t以下组件部分测试测试参考:4 j% t2 f- b. o1 {( F
    ; \5 ~8 ?4 Q6 N
    参考的B站视频7 J9 U) V. w& i$ c. D7 E! z
    qtconsole 官方文档:The Qt Console for Jupyter
    # k/ E0 W2 h8 s( E组件1:jupyter qtconsole0 D5 H% i. U' k- |
    1、安装 qtconsole 库, 经测试发现,该库目前不支持 pyside6, 所以更改解释器环境到 pyqt5 or pyside22 ?) J: G* s6 X6 ?* g) o- i0 ^+ o
        pip install qtconsole -i  https://pypi.tuna.tsinghua.edu.cn/simple
    6 }8 i4 F0 e2 Y8 e5 O; I3 X5 ^1
    * b; n6 q8 z% _' W2、尝试启动" h+ \. Y8 e1 n( I8 h
       jupyter qtconsole
    ( p+ v5 e( a# J0 j1 L1
    : e0 h: e; P2 _" L$ i$ K4 X, @8 I: N% u1 u$ N+ ~
    $ W, q* t: G9 X2 h6 \) }; J
    3、尝试嵌入组件到pyside2 ui中
    ; ?2 r1 \$ m3 M( o' k# A
    , p5 m4 y3 ]: h( Q) `* |3.1、复制参考的py代码 consolewidget.py 到 gui.widgets 文件目录下
    1 O6 c( r5 b9 u$ v2 V9 }, i: _7 M! t2 X/ H( S$ P0 l
    3.2、在Qt Designer 使用 Widget(基类/父类) promote to ConsoleWidget,并修改对象名称,操作如下图:
    8 W& T" j6 Z; P  ]9 i
    ; c& a$ I; Z) f, L7 \$ i5 t( G- j, h  w6 ]6 _" m
    3.3、ui显示样式修改1: widget 样式表
    $ h- Y; ^0 ~* z: a" L0 d. u
    ( M1 l  p* t/ T( x/*设置父类窗体,背景边框等属性*/9 P# J/ e" I5 r& h: K$ P4 @6 ~
    QWidget {
    , Q& Z- t- h% Q4 r4 [        background-color: rgb(33, 35, 45);
    - T) k, u+ L# a) n9 u# S        padding: 8px;
    ; m* u. D8 e2 R. g        border: 2px solid #c3ccdf;
    ( H) e% h9 c0 ~, G& z& u        color: rgb(255, 255, 255);
    2 u6 n, N8 r/ g& O        border-radius: 10px;7 e3 t9 Y6 j' _9 Z/ D, j7 w
    }
    6 r4 r" E) d, _! q( r% J1
    + w: T1 l/ F0 a0 i* [2
    + I$ S, \) V9 f% E33 p) V! O6 {* L4 @
    4% V( g2 z# \7 y% a
    5
    " o( V6 [. d. N, b0 p6
    7 a5 C  G- m# v) H& S, l( y& N  F9 ^7
    8 I7 \+ e4 `3 D3 M0 y89 r% ~, G1 B8 |- A6 T0 C
    3.4、ui显示样式修改2:qtconsole启动界面风格指定* q( z5 ~" S6 F
        self.set_default_style('linux')- e5 z4 O) \5 x( x2 I: X+ W- x( p$ c
    1
    % Z1 w% c* Y1 X8 j5 d6 k( |3.5、该窗口的实例化在uic自动生成的代码中, Y# Q3 A8 w% x6 n7 p
        self.ConsoleWidget = ConsoleWidget(self.frame_2)
    5 P( ?& f% `( W0 v; S+ Z    self.ConsoleWidget.setObjectName(u"ConsoleWidget")
    ' Z" d7 I! |: l2 b! P1
    * D( c- ?+ ~; g8 o" T% F# d  }2
    1 i& Y8 f" l# R. N3.6、运行效果
    " o. R  V5 ?% g; z
    6 C' d9 I/ C: R组件2:matplotlib FigureCanvas for qtwidget+ @: q' ^6 I- C# Q8 V
    1、安装相关库, 指定清华源
    " R" {5 }  |, c* F/ f5 r( N    pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
    3 l2 g) r4 E1 \1 h$ C    pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple$ ~0 s4 d' l9 X; P
        pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple4 x3 j7 i8 B( B; L( c- D/ [
    1: b; {$ @) \% o& y
    2
    / A" p1 y: Z4 p! b31 u; i! k" j3 x, ^2 I4 h& V+ a( ~6 z
    youtube 参考视频
    : f( j, U7 |6 Y8 w3 H2 v网站教程
    6 f; }! n  A3 b1 B* a  X& C7 Jyoutube 参考视频: 不同主题风格调整方法,导入csv数据显示9 D- n2 r# Y: P- a) v8 ^8 B! P
    2、 复制 MplWidget.py 文件到 gui/widget 目录下
    * B' W1 y. O; I2 o3、测试 animation, Plotting Live Data in Real-Time
    , m3 j. I& T- y
    % {& z& `: B( X, t0 I/ p测试方法:plot_live_data()
    ! p+ _8 c( U5 X& ^9 ~- P8 ?- \个人理解,animation 应该就是定义了一个与UI同线程的定时器。
    8 t% M" Z5 \! N+ @组件3:pyqtgraph  l7 M* b9 u3 E0 S: k, D1 E
    参考视频1
    0 _- t( r1 g3 l' y参考视频2et’s Build an Audio Spectrum Analyzer in Python! (pt. 3) Switching to PyQtGraph+ H+ o2 D* O4 D/ n2 A3 O5 a7 w

    , v7 u! |: V* i# ]7 C1、安装相关库, 指定清华源0 m& r4 m: O& k
        pip install pyqtgraph -i https://pypi.tuna.tsinghua.edu.cn/simple- V  I  o1 Y7 c2 M  ^4 l
    1
    ) S: k' E( D) N9 q; H" J' ?2、在 gui\widgets 目录中增加 pyqtgraph_test.py文件: N3 `' j3 c' ~4 \
    增加 2个按钮(draw, clear) 和 1个pygtgraph窗口控件(PlotWidget) 布局
    + n% b+ I7 _; Q( l7 W! E0 h3 v5 |定义刷新时间,帧率,每隔通道的数据记录最大长度等概念
    " B$ e; s( x1 x- Q0 f3 p7 N注意,每个点之间的采样时间实时性不是QTimer能保证的。% E3 y5 D# h: M
    还需要想清楚如何保证准确的采样时间,以及与数据刷新时间间隔之间的关系。(参考已有的scope的习惯)
    . e  g' f6 }) F8 ]" X) j. M# R使用 QTimer 定时器, 实现动态刷新的功能, 60FPS -> 定时器时间间隔设定为 1000/60ms
    " D5 }4 F4 x5 ^3 Q$ ]  R; z调用 self.graphicsView.plot(self.y_vals) 绘图,但注意,重复调用相当于创建多个通道的曲线。如果只想显示一个通道的曲线,有2种方式7 I( W. Q, n7 B% f- r! ?" M5 ]6 l
    方式1:在 plot() 方法前,调用 clear() 方法% @. C9 a  B% C% _4 O; V
    方式2:使用 self.graphicsView.plot.setData() 方法刷新数据,对应的数据清除方法也改一下,改成setData([])
    ! j  j( X! t, e& T" U: L3、参考 Audio Spectrum Analyzer 代码,优化多通道显示刷新方式
    % y# J% `# i8 R  t+ F& u源工程运行前,需要安装的库,pyaudio使用pip安装会失败,使用管理员模式启用conda终端安装. X  R( D* f5 l0 S
       pip install opensimplex -i https://pypi.tuna.tsinghua.edu.cn/simple8 y0 e- L: {5 V
       conda install pyaudio -i https://pypi.tuna.tsinghua.edu.cn/simple
    3 a/ z5 R8 ~$ {7 {$ d6 E1 h& V5 ~7 v4 _1/ D) y4 ]6 M1 f" H3 [2 g6 B" [
    2
    4 l3 i# Y2 D7 ~3 p; y; F参考 self.traces = {}、set_plotdata() 数据结构和方法,优化多通道显示逻辑
    7 A* y$ t! G3 z. g) X
    ; p/ [; A# P/ h右键RUN pyqtgraph_test.py,效果如下:
    - O" c  i; P8 N' r. Z5 ]; O
    2 e2 o# u+ u# h- L/ O1 n" y: ^$ r
    3 C5 y. N4 }  g5 D: }4 O5 H: w文章知识点与官方知识档案匹配,可进一步学习相关知识
    . }8 C. [9 t0 U) N- @# Q& R————————————————% K$ _5 H/ _  K
    版权声明:本文为CSDN博主「HUIJIANG123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    0 D6 @* ~8 G# N原文链接:https://blog.csdn.net/u012928587/article/details/124547230
    : {" b) R- |( w- O( Y# Y3 u% a: C, f; v$ d% d1 y& s: w1 T) O0 r

    ( p0 t5 [) t+ a( ^& H
    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-7-10 13:29 , Processed in 0.372720 second(s), 51 queries .

    回顶部