QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2318|回复: 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 Z8 V" \, ]6 f& ]0 x2 [Python UI设计学习笔记,在学习的UI框架中嵌入其他ui组件:增加组件到主画面的pages中; C2 P  Q0 y0 V2 }( R+ M# i% s

    + |  c4 L: _! Q# N' k9 k/ _  L" |1 y8 n! g: j( }
    文章目录, e1 d0 g- S9 j
    在Pyside2中嵌入其他ui组件:增加组件到`pages`中,在`develop`分支中开发
    % |5 {) r5 I2 Z# ~7 b6 g% p组件1:`jupyter qtconsole`
    - |" s: M2 ?5 ]" z% s& k组件2:`matplotlib FigureCanvas for qtwidget`! y2 l* F, Q4 G
    组件3:`pyqtgraph`
    / ]$ D" C2 W3 a  V6 D在Pyside2中嵌入其他ui组件:增加组件到pages中,在develop分支中开发
    7 F% l  T3 `6 A  `9 v) |5 a% l) i以下组件部分测试测试参考:- l1 R7 t, V. o+ G' f8 F9 ?4 G

    0 w, t  V; @  f* V' k参考的B站视频
    % Q* m- B" y  V2 u$ R2 Uqtconsole 官方文档:The Qt Console for Jupyter
    3 B; Z5 m: e. e- L! I- ^组件1:jupyter qtconsole
    ; {* n0 m& Z" |* H1、安装 qtconsole 库, 经测试发现,该库目前不支持 pyside6, 所以更改解释器环境到 pyqt5 or pyside2& d, P- I7 W  \0 l5 d1 f4 |
        pip install qtconsole -i  https://pypi.tuna.tsinghua.edu.cn/simple
    / ?1 x7 P+ D4 W- P. G) p  B1
    ! R& l# U: }& h  m1 z  m. k" D0 F! ^2、尝试启动
    % h! W4 t# u6 i8 v" L* J) K   jupyter qtconsole
    / E+ o( Q* e, _/ {6 X- ?1 R: A; [& H1# H- o4 X& _3 ^% g

    : z5 E, l% L9 ]$ h' V/ t  f5 ]$ z, q" R1 L  s9 h: {
    3、尝试嵌入组件到pyside2 ui中
    ) M) q0 P& x7 d* s2 b! P
    2 H8 s: s0 g6 r% ]7 c$ w# E$ m+ O3.1、复制参考的py代码 consolewidget.py 到 gui.widgets 文件目录下
    $ k. k- Z/ b! X: w6 y. {; K/ f5 h
    3.2、在Qt Designer 使用 Widget(基类/父类) promote to ConsoleWidget,并修改对象名称,操作如下图:% }/ P! |1 }: m' y4 e

    # \3 |* h! X6 l# @% g( k, O5 h2 g# D4 D  s, N
    3.3、ui显示样式修改1: widget 样式表8 V' O2 C, S0 q1 c9 N& k

    2 u/ {8 Y, q; b: e/*设置父类窗体,背景边框等属性*/" v* C) J, `/ i$ J9 Z; h/ e
    QWidget {
    8 ^* H0 S$ R7 t        background-color: rgb(33, 35, 45);
    2 j% l) s5 ?+ ?7 N4 H        padding: 8px;
    - r( L4 A0 G8 p, ^9 v* i, z        border: 2px solid #c3ccdf;
    ! O" i3 s. ~- K$ x0 K3 b        color: rgb(255, 255, 255);; ]: F5 \" }3 Q8 @& G5 h/ b- V
            border-radius: 10px;+ o& q; I3 t$ f% {3 N
    }
    4 B/ W  c0 y/ H7 m  g18 |  N% p  E7 {3 {! i- Q8 A
    2
    * U" p0 a: v& \# S, y# _9 [1 Q3) I: h8 {! t4 Z; y' F* `% x
    4
    1 T9 K4 ?0 Q2 p2 ?& T1 ?# D9 Q5/ z! D& G" e0 B/ b
    6+ o0 L- Y% g/ h2 [+ J
    7
    ' ?4 {. s/ h" l% ^8
    ' O9 f  U9 C+ n! z, L% K, S9 U3.4、ui显示样式修改2:qtconsole启动界面风格指定
    ( h6 N3 ^0 Z9 ]: l- [' M- F- A& y    self.set_default_style('linux')
    ) y! z/ {; \- C2 q! }& K1
    ) n! y2 y4 a: E$ i# U8 h3.5、该窗口的实例化在uic自动生成的代码中
    ) \/ r% ]6 ^1 q+ l: R) o. ~9 u# b+ ^    self.ConsoleWidget = ConsoleWidget(self.frame_2)( U( B/ S3 [+ Q( [- B
        self.ConsoleWidget.setObjectName(u"ConsoleWidget")" e/ F) l6 t: _2 U$ K
    1
    + F- q! W$ A' x# T" X24 C( |3 n$ M/ I6 M" f9 a. s
    3.6、运行效果
    ; E" d" T; [$ M6 P4 X, `! `! Q0 ?1 c- m9 l) P6 p# I" b
    组件2:matplotlib FigureCanvas for qtwidget
    & U! O9 u+ p  I- P) _6 P. p: n3 }1、安装相关库, 指定清华源
    ; n0 D4 P$ `8 [+ k( _0 n  I( t  w    pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple2 g! S0 |5 M* d5 Y
        pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
    . R" U2 Y% v* F4 V4 {  Q& @    pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
    + @( D( q0 P( t+ q8 k& c. t1
    5 Q$ B2 e5 u: `, E8 A& [1 y* S9 c2
      L9 \) l: m  L9 ]3, K, V  ^8 x" p+ y- s+ |1 F. g! x
    youtube 参考视频
    0 f$ b' I5 H, b网站教程" W5 X8 u. q% k3 o
    youtube 参考视频: 不同主题风格调整方法,导入csv数据显示7 n4 h2 k% ^. b6 Y$ x0 Q7 A( U6 Z
    2、 复制 MplWidget.py 文件到 gui/widget 目录下
    0 v( o; Q- a5 p; W% ?3、测试 animation, Plotting Live Data in Real-Time
    - G5 l4 T2 F! U
    ! f" f0 l0 D4 J测试方法:plot_live_data()- f! e6 s8 M4 X! V, \# I
    个人理解,animation 应该就是定义了一个与UI同线程的定时器。/ C: H8 \. t  x7 s  A
    组件3:pyqtgraph
    + K4 S9 n% y. y; b2 c参考视频1
    . F! e0 R% i3 m+ V参考视频2et’s Build an Audio Spectrum Analyzer in Python! (pt. 3) Switching to PyQtGraph' e, [% u& U' W

    . }" X+ @' U6 z  b; Z1、安装相关库, 指定清华源  r( F" o) E) g
        pip install pyqtgraph -i https://pypi.tuna.tsinghua.edu.cn/simple
    3 \" p+ f, T+ x4 A' a; x  ~6 r  G1( ~: O, o3 u, y8 l
    2、在 gui\widgets 目录中增加 pyqtgraph_test.py文件7 ]: e3 R3 @: f$ q1 f& p
    增加 2个按钮(draw, clear) 和 1个pygtgraph窗口控件(PlotWidget) 布局
    ! s) e! T# F- O9 ]定义刷新时间,帧率,每隔通道的数据记录最大长度等概念5 P/ ^' g) T/ Y2 R5 J
    注意,每个点之间的采样时间实时性不是QTimer能保证的。
    1 J6 D8 Z, C. C! K还需要想清楚如何保证准确的采样时间,以及与数据刷新时间间隔之间的关系。(参考已有的scope的习惯)1 O; F  U  u4 q4 C1 d% j
    使用 QTimer 定时器, 实现动态刷新的功能, 60FPS -> 定时器时间间隔设定为 1000/60ms  M& H, J9 q; S4 k" i
    调用 self.graphicsView.plot(self.y_vals) 绘图,但注意,重复调用相当于创建多个通道的曲线。如果只想显示一个通道的曲线,有2种方式
    1 [# z$ n& D$ G# O方式1:在 plot() 方法前,调用 clear() 方法+ f# H" x4 K- K' h+ y5 j6 j+ K
    方式2:使用 self.graphicsView.plot.setData() 方法刷新数据,对应的数据清除方法也改一下,改成setData([])1 ?! Q6 y# j) J5 {6 R* C8 R
    3、参考 Audio Spectrum Analyzer 代码,优化多通道显示刷新方式
    " W4 S/ Z4 D$ t) y9 t! m. @' ^源工程运行前,需要安装的库,pyaudio使用pip安装会失败,使用管理员模式启用conda终端安装8 }- g; s, w. d: a  v0 x" D4 o
       pip install opensimplex -i https://pypi.tuna.tsinghua.edu.cn/simple
    6 Q3 P+ Q* Z" q' h8 X   conda install pyaudio -i https://pypi.tuna.tsinghua.edu.cn/simple# F2 I& c9 ~  t) n6 ~0 f  k
    1
    8 p1 z: c! B; Q& h# W27 p; d/ o' U  M* T+ B( i& `2 h
    参考 self.traces = {}、set_plotdata() 数据结构和方法,优化多通道显示逻辑
    5 S- ^' v! P+ e6 ]$ N( D7 s
    # |1 D) P6 r. \0 R+ H' N/ }) ?右键RUN pyqtgraph_test.py,效果如下:
    / [/ i6 ^# I; T) q
    ! v' b( E5 R2 t! |9 i4 X9 J2 C% Y, S+ Q$ p8 N
    文章知识点与官方知识档案匹配,可进一步学习相关知识
    % [; n7 s& ?" ~- u1 w3 L. [" V————————————————
    " D' U3 p# e8 q7 W7 U; ~$ w版权声明:本文为CSDN博主「HUIJIANG123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。( o5 {! E, U5 O( [
    原文链接:https://blog.csdn.net/u012928587/article/details/124547230
    , ~( M2 n. Q" n3 ~7 `% _0 k$ {' W; W0 L! l5 s4 c
    * g2 j. h. b- R% F- _
    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-5-26 05:17 , Processed in 0.323728 second(s), 51 queries .

    回顶部