QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2303|回复: 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
    $ m, D# h5 X( C5 ]) p7 U( T
    Python UI设计学习笔记,在学习的UI框架中嵌入其他ui组件:增加组件到主画面的pages中
    8 I7 u* f2 W" U; K& P7 Q; p+ o# e0 ?# q5 k) [! D

    * b$ N! q5 G( r7 ~, T" s/ r文章目录
      r. P$ T" L7 A, c在Pyside2中嵌入其他ui组件:增加组件到`pages`中,在`develop`分支中开发2 s6 l1 R- c' L9 x( u6 u
    组件1:`jupyter qtconsole`$ u# G* Q$ B6 ]8 z
    组件2:`matplotlib FigureCanvas for qtwidget`8 B% w: z$ T" t8 I; E: E
    组件3:`pyqtgraph`# s; j- h  Q6 V8 U& k! R% _5 W  Y
    在Pyside2中嵌入其他ui组件:增加组件到pages中,在develop分支中开发
    : D7 M" F" i" m5 H% S  `以下组件部分测试测试参考:9 v4 Y4 Y9 J0 u  a; E6 w, J
    ' ]8 [5 z! L$ t% ~
    参考的B站视频
    8 ^' |+ F! z! U" A3 @* X% Q8 r: Gqtconsole 官方文档:The Qt Console for Jupyter% X4 x$ D, j  ?5 E. n- K. T3 |
    组件1:jupyter qtconsole! b- Y; F+ ?. Z5 i) O, `. @; J9 O4 f
    1、安装 qtconsole 库, 经测试发现,该库目前不支持 pyside6, 所以更改解释器环境到 pyqt5 or pyside2  C5 s$ |* u) W9 q. }4 E0 b' w
        pip install qtconsole -i  https://pypi.tuna.tsinghua.edu.cn/simple" Y5 G2 I! ^" W1 H
    15 P4 g& p& Q8 M6 M; h
    2、尝试启动/ L$ b) V/ _- r5 V5 R7 t
       jupyter qtconsole; h5 A1 i- r8 O' g
    1
    0 b& _8 i) c& F5 w
    # V1 t/ V+ T/ p% ~, d2 l. k7 T% w- F' ?9 [8 q( ^7 m
    3、尝试嵌入组件到pyside2 ui中$ }2 L  }7 p3 O: q& j

    9 [3 M- D5 _, h/ l( k3.1、复制参考的py代码 consolewidget.py 到 gui.widgets 文件目录下2 \) ~& {2 B3 s

    " Z, z* T  j" U# q3.2、在Qt Designer 使用 Widget(基类/父类) promote to ConsoleWidget,并修改对象名称,操作如下图:: V* C( _1 u' P& t* w0 M

    5 F% c1 N8 A# Z) ]" C) b6 g7 j8 a* `, Y
    3.3、ui显示样式修改1: widget 样式表
    / x5 Y# B- H' D; ~, |5 f6 u9 Q! q( T6 S; b
    /*设置父类窗体,背景边框等属性*/. O- ?( L1 v. F* n
    QWidget {( B* c" G6 e$ R- s
            background-color: rgb(33, 35, 45);& `% S! r5 y7 Z  m# t& u+ g4 J
            padding: 8px;
    0 v$ H; x8 `  ?$ N! B        border: 2px solid #c3ccdf;
    . y, }5 M% `3 O$ F6 ^        color: rgb(255, 255, 255);
    * P. ?+ }' {- w% C0 e0 x8 ^" }$ h        border-radius: 10px;/ W9 \" ?. p6 C8 ^3 H
    }
    8 a- {, o8 n; W) R  p' }. ^2 z12 ?1 j, V# J& Y- ~" i4 d
    23 h& b0 r$ m9 W- z" _/ A
    38 ~# o3 g/ S* N9 q! Z
    43 x  @, k: w# o
    5  O; ]0 @" `0 ~
    6
    ( A$ X  }% L) [6 v1 i7! Q1 }% P5 e  I" _. S
    8( E" s+ a' k. U& k! y
    3.4、ui显示样式修改2:qtconsole启动界面风格指定" C- v, a3 T+ M, G
        self.set_default_style('linux')
    / A* h5 M+ g. D1 Q2 p1
    " C8 B7 o3 `8 Q  E: G! X2 }- ^5 d3.5、该窗口的实例化在uic自动生成的代码中% B) ]/ X& N6 [* a
        self.ConsoleWidget = ConsoleWidget(self.frame_2). Z3 y5 a+ d- T* [" Z2 q
        self.ConsoleWidget.setObjectName(u"ConsoleWidget")
    7 l3 r+ }) @7 ~1  ^% i* {* s. [! j  ?3 e
    2
    # D6 f$ U* L" Z$ s  G, G9 L9 Z3 Z3.6、运行效果& n$ N4 b# [- p, t" t8 _

    + i" I) p: R% `# s2 M组件2:matplotlib FigureCanvas for qtwidget
      Y" Q* |. A, m3 `0 ]. _1、安装相关库, 指定清华源
    1 `2 `3 K; Y4 c5 O    pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
    : [2 U! h$ ~) U5 j; ?" R    pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
    . N  l9 b! c- V/ v" j9 W. o    pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
    ) Y  W9 H: l7 H; q3 e* |/ t- T1
    : l2 V% B% I' |5 O* R2! _" u# h5 [' y( O" c8 \2 i
    3& ]' N1 }4 g1 i8 @- a6 O# k! ^7 H
    youtube 参考视频$ g) N( U. x! d3 Q) B# {
    网站教程
    , {* a+ w: X" y. X8 u: V* u+ e8 Lyoutube 参考视频: 不同主题风格调整方法,导入csv数据显示  d4 `, J6 z0 |% Z  O  d
    2、 复制 MplWidget.py 文件到 gui/widget 目录下
    - t4 B8 G3 I  Q, c4 F) y1 |3、测试 animation, Plotting Live Data in Real-Time
    . b& L/ V2 v% K8 B
    ) i! `: \7 h4 i测试方法:plot_live_data()/ K* c* ?+ i1 X4 Q/ S+ Y
    个人理解,animation 应该就是定义了一个与UI同线程的定时器。
    3 b0 n8 N* R) S7 q6 L4 p组件3:pyqtgraph' |* [! D2 M( w1 w& F: J
    参考视频1
    9 z$ e/ ]4 d% [2 W参考视频2et’s Build an Audio Spectrum Analyzer in Python! (pt. 3) Switching to PyQtGraph
    . @2 v7 W% |8 t, g8 z* H' _4 P0 u) z6 [5 m3 `
    1、安装相关库, 指定清华源
    ! g7 z( F; w7 r4 [    pip install pyqtgraph -i https://pypi.tuna.tsinghua.edu.cn/simple
    , w% Q2 k1 S/ e) K# H. F" {3 Y1( i, P' C' H6 o4 k) X. B
    2、在 gui\widgets 目录中增加 pyqtgraph_test.py文件& R, G0 e( u8 p7 ?3 w3 g
    增加 2个按钮(draw, clear) 和 1个pygtgraph窗口控件(PlotWidget) 布局
    / m3 O" i3 H* ?0 ]" S7 n  G定义刷新时间,帧率,每隔通道的数据记录最大长度等概念  r9 ~2 V0 I9 K" j& ]/ C& p: u* i
    注意,每个点之间的采样时间实时性不是QTimer能保证的。
    9 J6 `# o, A, t6 t. M) p  q+ W还需要想清楚如何保证准确的采样时间,以及与数据刷新时间间隔之间的关系。(参考已有的scope的习惯)0 u2 A3 @& r, D
    使用 QTimer 定时器, 实现动态刷新的功能, 60FPS -> 定时器时间间隔设定为 1000/60ms/ l4 |: Q0 Y% r/ i
    调用 self.graphicsView.plot(self.y_vals) 绘图,但注意,重复调用相当于创建多个通道的曲线。如果只想显示一个通道的曲线,有2种方式
    6 @0 _* T. H" o. z$ h方式1:在 plot() 方法前,调用 clear() 方法  I+ a3 z0 |7 a! d6 M
    方式2:使用 self.graphicsView.plot.setData() 方法刷新数据,对应的数据清除方法也改一下,改成setData([])
    ) M! K# \4 q6 m8 _; c6 _! s3、参考 Audio Spectrum Analyzer 代码,优化多通道显示刷新方式
    * z- l  U# H3 P$ j/ ^$ v, d源工程运行前,需要安装的库,pyaudio使用pip安装会失败,使用管理员模式启用conda终端安装9 I# _. B6 ?$ `( m5 J. \
       pip install opensimplex -i https://pypi.tuna.tsinghua.edu.cn/simple( W# l" R" g- D9 [2 `6 P' F/ R
       conda install pyaudio -i https://pypi.tuna.tsinghua.edu.cn/simple2 j1 X9 u( S1 C2 h0 R# o
    1
    / W( u" r' H/ Q5 F$ Q$ I26 {7 \% q8 V( ^* d' ~" S3 @
    参考 self.traces = {}、set_plotdata() 数据结构和方法,优化多通道显示逻辑5 x, G2 q' m: e9 H9 B! B8 o
    * T& J! f! X* }1 @7 h1 j/ c6 y
    右键RUN pyqtgraph_test.py,效果如下:
    ; D/ B# V  D+ g4 X& I5 j: A8 j/ A( w) |/ w% G2 p8 E4 c
    ! _9 Z) y# |4 W% k; K* J
    文章知识点与官方知识档案匹配,可进一步学习相关知识+ S, J: |$ Q3 }. \2 ~, [
    ————————————————6 c' p, e; J+ V7 T3 p0 K+ F7 i
    版权声明:本文为CSDN博主「HUIJIANG123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。( ?+ _6 j5 |, L2 |! n
    原文链接:https://blog.csdn.net/u012928587/article/details/1245472306 T4 T1 H" m: |0 n3 c1 x

    + ~: o4 `  F4 w0 \1 b. {
    . A* U8 ]+ Y1 H9 w& W
    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-10 13:16 , Processed in 0.413994 second(s), 51 queries .

    回顶部