QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2381|回复: 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
    1 O6 \; h0 H# v7 e( v
    Python UI设计学习笔记,在学习的UI框架中嵌入其他ui组件:增加组件到主画面的pages中
    ) p7 w9 W2 x& D$ f( M, h) y3 n& A* p& T0 D
    * c0 H+ u7 H, y: F
    文章目录8 ?( M6 q6 r$ M
    在Pyside2中嵌入其他ui组件:增加组件到`pages`中,在`develop`分支中开发) ]5 h. d. \8 [. S6 ^
    组件1:`jupyter qtconsole`
    * Y( v: M: y: u组件2:`matplotlib FigureCanvas for qtwidget`3 Q9 U) ]2 }# ^, X+ M+ ?# ]5 q
    组件3:`pyqtgraph`
    ; B. Z3 h8 m1 _. F2 O5 N3 ^在Pyside2中嵌入其他ui组件:增加组件到pages中,在develop分支中开发
    3 h' n' F: T. @* A% v% T以下组件部分测试测试参考:
    # c/ R! ^4 L/ c$ T+ w7 l6 u3 `9 O% Z7 \5 A) j! N
    参考的B站视频
    . n6 C7 t: u0 B& L7 u7 rqtconsole 官方文档:The Qt Console for Jupyter
    / s  r6 S3 h2 Y组件1:jupyter qtconsole8 D6 t) y/ G9 ]2 Z: b
    1、安装 qtconsole 库, 经测试发现,该库目前不支持 pyside6, 所以更改解释器环境到 pyqt5 or pyside2
    ; G2 ~! f5 g$ j! t' c# \% H    pip install qtconsole -i  https://pypi.tuna.tsinghua.edu.cn/simple  ?& S# O: e( N$ s2 ~
    1
    . a6 ~0 o4 W+ e$ k2、尝试启动
    , ]6 A4 P! f' c+ g   jupyter qtconsole
    6 F6 s, S9 D. }1  n, [* B! z: E  T6 b5 H) B9 J

    . d, H& M4 L2 f* E. O; {6 i. P; i5 @/ s8 y, _
    3、尝试嵌入组件到pyside2 ui中6 g- K  R9 a4 e$ A$ [$ j" {

    ) O/ v5 j0 D0 L8 C+ n3.1、复制参考的py代码 consolewidget.py 到 gui.widgets 文件目录下7 g; R5 }/ T  e/ P

    & \' P( F* z1 }3 o1 A( x6 w3.2、在Qt Designer 使用 Widget(基类/父类) promote to ConsoleWidget,并修改对象名称,操作如下图:( w3 w9 }  C  [- L' O. V% ?
    . G* i. q2 {1 S" ^

    7 i3 Y$ j* D8 R3.3、ui显示样式修改1: widget 样式表
    4 l, U- a8 {; n% B0 D% j/ W3 n3 F0 g7 j2 V( ^' E
    /*设置父类窗体,背景边框等属性*/, m6 s. Z$ G0 p+ g
    QWidget {
    ) e$ B/ f. ]5 X, }% |! a" y8 W        background-color: rgb(33, 35, 45);
    * Q7 x3 w2 X6 C8 m& ]: m        padding: 8px;
    . ~& X" ~( i' h7 z0 i" L        border: 2px solid #c3ccdf;
    - d0 P8 G1 k6 t7 V! d        color: rgb(255, 255, 255);
    ! E! l+ c- p/ c% ^' S4 l        border-radius: 10px;. o" y% |! O+ ]5 U. s  `
    }$ e( M  Q. v8 i% a! L& f
    1
    ! Z4 s+ d' H( V2( I6 d" }6 {: Q! ]9 x2 K
    31 I+ ~3 G: v9 Z  S$ N* B
    40 R: x5 u, ]) d* t- c8 x( b2 c
    57 P. m0 d! d$ y, g2 r
    6# N0 D" F4 ~5 h/ ]
    7- @& n7 o) ~4 N8 \8 ]
    8' N  j5 w  e2 F( Z6 s  J9 W: J
    3.4、ui显示样式修改2:qtconsole启动界面风格指定  f2 h: [: p& W& G! u6 J9 O0 M% E
        self.set_default_style('linux')
    ; X3 g8 V' ]. u5 h1. G  W) c+ {% D5 E* X* U4 Y
    3.5、该窗口的实例化在uic自动生成的代码中
    2 _' k, n" w% J. n5 P$ A    self.ConsoleWidget = ConsoleWidget(self.frame_2)
    / {4 x) h, k9 x/ Z- C' u% e' D    self.ConsoleWidget.setObjectName(u"ConsoleWidget")
    : t7 \# ^! ?2 Z" H: x% `6 s1
    4 H; ^! j" u6 {2
    4 U' U6 D' w: \  u, ^. w* j3.6、运行效果0 h2 d# [9 m! u+ W
    & Z9 ?- F/ s/ O3 a; j4 V, D
    组件2:matplotlib FigureCanvas for qtwidget
    % n! \) l1 J/ U; E: R  [, N1、安装相关库, 指定清华源
    / `, n- _( w* O    pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
    * a" u- J2 H8 S9 ^0 Z+ j    pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
    ) e8 v* g8 s- Z, s2 ?( x0 i* _0 Y    pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple" W; ~7 C3 T5 c0 ~7 x3 x) _
    1
    : C6 Q* h4 S3 W; k22 X& B; N) ~6 Q3 h8 \" i
    3% k9 C6 U- w4 ^$ m% j3 I
    youtube 参考视频  B4 _, C4 f7 M9 ?1 {/ y
    网站教程
    3 H3 z1 Q  Q1 F) B# j6 T/ F0 p4 `youtube 参考视频: 不同主题风格调整方法,导入csv数据显示5 q+ D3 c% \4 I; }$ W! V
    2、 复制 MplWidget.py 文件到 gui/widget 目录下1 Y6 u3 `- ^8 C1 i: z
    3、测试 animation, Plotting Live Data in Real-Time
    ( I. ^/ c& b; W; ~% n* H0 p! ?
    8 X# F) g3 O; q测试方法:plot_live_data()
      K$ z; s0 S" Q1 T# G2 e个人理解,animation 应该就是定义了一个与UI同线程的定时器。
    3 T- ^! b# q* X" k7 @组件3:pyqtgraph
    & r( J% L  _# \. f/ x/ d参考视频14 ~" m1 m4 v0 B
    参考视频2et’s Build an Audio Spectrum Analyzer in Python! (pt. 3) Switching to PyQtGraph
    . m! ^& O+ [: D/ Q# v1 {* G& Q1 Q2 m- ], q% \: I' {
    1、安装相关库, 指定清华源. I0 W) l# H9 G) k
        pip install pyqtgraph -i https://pypi.tuna.tsinghua.edu.cn/simple2 }3 U# z) k. Q" p) h
    1/ a' F, \& d  Y6 s
    2、在 gui\widgets 目录中增加 pyqtgraph_test.py文件! ~$ e+ }% D3 J. w, \/ g
    增加 2个按钮(draw, clear) 和 1个pygtgraph窗口控件(PlotWidget) 布局
    * L6 i2 k9 Z/ i定义刷新时间,帧率,每隔通道的数据记录最大长度等概念
    ( f3 U0 [, k9 Q8 x2 e1 n注意,每个点之间的采样时间实时性不是QTimer能保证的。
    - G4 c, w: h3 A/ I) p& o, W4 c还需要想清楚如何保证准确的采样时间,以及与数据刷新时间间隔之间的关系。(参考已有的scope的习惯)% P' C) g% [7 X6 [& j( L1 g
    使用 QTimer 定时器, 实现动态刷新的功能, 60FPS -> 定时器时间间隔设定为 1000/60ms. D+ W5 t! E# p" [; |
    调用 self.graphicsView.plot(self.y_vals) 绘图,但注意,重复调用相当于创建多个通道的曲线。如果只想显示一个通道的曲线,有2种方式
    - d" }0 ~% Z* o4 y$ d. [8 d方式1:在 plot() 方法前,调用 clear() 方法
    ; V. ]4 [$ [  |1 f方式2:使用 self.graphicsView.plot.setData() 方法刷新数据,对应的数据清除方法也改一下,改成setData([]). M: B& `2 n+ p0 `. g' ~
    3、参考 Audio Spectrum Analyzer 代码,优化多通道显示刷新方式7 j' o& Y. w2 T2 _
    源工程运行前,需要安装的库,pyaudio使用pip安装会失败,使用管理员模式启用conda终端安装( r! _( z0 d& q: S! l* j/ n
       pip install opensimplex -i https://pypi.tuna.tsinghua.edu.cn/simple1 t) a' g" X; @- k
       conda install pyaudio -i https://pypi.tuna.tsinghua.edu.cn/simple- n: L1 _  G! L: l, S/ S- t0 r
    1
    7 B2 \/ ]* ]' }5 B2
    + Y+ ~8 V, N: k  [参考 self.traces = {}、set_plotdata() 数据结构和方法,优化多通道显示逻辑2 u% d: e8 N; P: P. I

    7 D: J6 V2 |! L  d5 l9 ]- L' J右键RUN pyqtgraph_test.py,效果如下:; N+ U+ \) S$ R' A) ^
    / i6 w: W+ @+ H9 }9 @

    / F1 V8 }2 c7 {" _( U) C# }6 H文章知识点与官方知识档案匹配,可进一步学习相关知识
    " M  J7 J0 u  ^4 \* g& p" p————————————————
    3 _  ~/ I+ U2 ~% }! r! a7 W7 C版权声明:本文为CSDN博主「HUIJIANG123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。. X, r! X6 H) p( q4 H
    原文链接:https://blog.csdn.net/u012928587/article/details/1245472306 _' w9 N: m+ ^

    : I* S5 c. T  z! F6 j& E& {! A' ?  m; C/ E9 A1 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-9-24 19:35 , Processed in 0.378389 second(s), 51 queries .

    回顶部