QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2346|回复: 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 [$ z$ V0 V1 `8 [4 G: W& t
    Python UI设计学习笔记,在学习的UI框架中嵌入其他ui组件:增加组件到主画面的pages中
    + H2 u1 {& P' M4 ?0 S7 {
    * L1 D4 D1 Y6 X8 d; H3 L( F
    ! C) [" w" b: }- z: X- ]+ s文章目录5 z1 i" q1 \* R  y& X5 I: E3 z
    在Pyside2中嵌入其他ui组件:增加组件到`pages`中,在`develop`分支中开发1 X* K3 ~" W, I" r2 k
    组件1:`jupyter qtconsole`
    ' H4 o& U5 B% U% U: U组件2:`matplotlib FigureCanvas for qtwidget`* b- d# L3 i& q! h. x/ ~! a
    组件3:`pyqtgraph`
    / X- C* `1 q7 p' C1 y3 x在Pyside2中嵌入其他ui组件:增加组件到pages中,在develop分支中开发
    1 C4 @7 K- z9 J以下组件部分测试测试参考:
    6 O) I8 f1 a% U1 ~
    : W( j/ M* E- M$ {* V' v1 l参考的B站视频7 ~) |% L1 G, K& Q
    qtconsole 官方文档:The Qt Console for Jupyter/ U1 c1 C% o. j& Q) S3 ^3 @3 h
    组件1:jupyter qtconsole- K# `7 m$ b9 R9 E' B" A
    1、安装 qtconsole 库, 经测试发现,该库目前不支持 pyside6, 所以更改解释器环境到 pyqt5 or pyside2
    8 ^( f$ @) g. ]$ z" x5 h8 L    pip install qtconsole -i  https://pypi.tuna.tsinghua.edu.cn/simple% j8 l! O4 z# n- v4 N; Q- A
    1
    4 g3 ~) I9 T* b$ [0 e2、尝试启动# C' p9 [# W  l7 R' \
       jupyter qtconsole: x) `$ Q6 f  x7 r# f- [! U6 A
    1
    1 ^5 u. E7 Q4 m# ]! O. a6 n
    " A6 i$ U" ^4 n* A7 S+ l0 A3 O" a+ {. T' c! i
    3、尝试嵌入组件到pyside2 ui中
    3 {9 ]1 ^4 d5 C  P3 y' @  g4 S! e/ i; X  s# Q
    3.1、复制参考的py代码 consolewidget.py 到 gui.widgets 文件目录下
    ( }# L' }) y2 a! u- j: ^2 H( ]6 d4 v! x2 |+ ?, W
    3.2、在Qt Designer 使用 Widget(基类/父类) promote to ConsoleWidget,并修改对象名称,操作如下图:; ~. U* N" r2 {9 n7 z

    8 m% |( z! o* Z: A6 D! d& z! h% w  p5 q% i  z
    3.3、ui显示样式修改1: widget 样式表$ x) \, ]9 K. y# @' s
    4 k# l: e' U+ k7 h# c
    /*设置父类窗体,背景边框等属性*/1 g, h, f) X" I! w
    QWidget {* r5 H0 d+ }2 W
            background-color: rgb(33, 35, 45);
    1 c' m! b) {0 O2 G* N4 \! }& g        padding: 8px;
    , H. ~- H2 i5 d$ r! s        border: 2px solid #c3ccdf;
    ( M7 N! V/ j; @- Q3 X# C0 D) Q% ?1 }        color: rgb(255, 255, 255);
    , J7 ~  T5 a, d/ y        border-radius: 10px;5 R+ H  ]( c. w' l
    }
    6 \8 k' J5 Z2 ^% I1
    3 I" t8 k: N) ~$ L2
    ( Q( n; T2 ]  L9 Q& q3
    ' v8 L9 z: c& V' s! m49 T7 _6 Q) T, B  P! C# n
    5$ b5 r4 x4 Y0 R# x. \8 H
    61 R) q2 y/ S9 P) }. V. _% i4 p8 z4 ^
    7' i' \- v! a4 j
    85 C8 ?9 W' k/ s5 @. W
    3.4、ui显示样式修改2:qtconsole启动界面风格指定
    " \' G7 R1 A5 U/ w7 I& C) S4 k    self.set_default_style('linux')
    . Z( ?' A: H# ^" P+ u6 H13 T% ^% m0 t4 Q, A
    3.5、该窗口的实例化在uic自动生成的代码中
    ; ~& J( V, ~# t  c5 |* H' }    self.ConsoleWidget = ConsoleWidget(self.frame_2)
      E% s+ b: z6 F$ r    self.ConsoleWidget.setObjectName(u"ConsoleWidget")5 y$ D: L+ k5 \* R0 i* d
    13 R6 \7 n) [' I$ C0 m7 d
    2
    / G1 D7 b5 v' w$ S6 y, v7 n' l3.6、运行效果' ]) h" U( z; Y0 G" J3 u  j( E
    - `* c  T9 N7 X! [1 w4 B9 E
    组件2:matplotlib FigureCanvas for qtwidget# C) _( M8 A  X8 E& T# \: K  Z9 ?5 X
    1、安装相关库, 指定清华源" M' G. t$ A: W7 C( d
        pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
    + O8 r3 {9 f1 R3 W9 V8 e' k    pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple: v. d8 l3 h" w& R& r
        pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
    3 X; L; S4 z& O1
    1 J# _1 A$ [, {+ Q8 o( [' o* j6 o/ q  G2( X  _0 j: ^; ?! ~/ U0 B
    3
    # a3 v$ Q, N/ B1 lyoutube 参考视频4 @0 L% h; o" Z+ n( s
    网站教程
    ; t; i% \- s, _5 ~$ ]youtube 参考视频: 不同主题风格调整方法,导入csv数据显示
    ! x; u6 V% U6 y: A2、 复制 MplWidget.py 文件到 gui/widget 目录下  a/ d" \, Q) \- p- ?; ?3 q/ d! a2 D
    3、测试 animation, Plotting Live Data in Real-Time
      l$ U* C1 ?) j6 D& x. g
    5 x: G* O' j/ p. X2 r: ]测试方法:plot_live_data()! c: [3 w" B8 U: j; j3 }, I
    个人理解,animation 应该就是定义了一个与UI同线程的定时器。
    + x: g! f7 ~/ e: m' ~0 o组件3:pyqtgraph
    3 {7 C) F1 Q- s$ k参考视频1
    $ z& w  \3 H/ h9 r3 D" w# l" m9 I参考视频2et’s Build an Audio Spectrum Analyzer in Python! (pt. 3) Switching to PyQtGraph- |* @' d5 D4 P6 _* |- g" w
    3 `  ^0 q+ K7 i: w
    1、安装相关库, 指定清华源0 S1 D3 P+ V2 @; i
        pip install pyqtgraph -i https://pypi.tuna.tsinghua.edu.cn/simple
    , U4 i: p5 x6 u4 k" P! Y8 f1
    " I, A9 m1 R- `  f) P- n. ~2、在 gui\widgets 目录中增加 pyqtgraph_test.py文件
    / K) y& a# A* q0 C* p" O增加 2个按钮(draw, clear) 和 1个pygtgraph窗口控件(PlotWidget) 布局" h" b5 S  U; Q/ V0 u
    定义刷新时间,帧率,每隔通道的数据记录最大长度等概念
    / R  {6 R" j8 O* r注意,每个点之间的采样时间实时性不是QTimer能保证的。
    8 I# w2 \' f$ I3 Q! O9 H还需要想清楚如何保证准确的采样时间,以及与数据刷新时间间隔之间的关系。(参考已有的scope的习惯)0 D6 y/ ~6 y/ T+ w" v. `
    使用 QTimer 定时器, 实现动态刷新的功能, 60FPS -> 定时器时间间隔设定为 1000/60ms) l) d9 [/ R" ^% \+ D
    调用 self.graphicsView.plot(self.y_vals) 绘图,但注意,重复调用相当于创建多个通道的曲线。如果只想显示一个通道的曲线,有2种方式
    . ~, J# M/ n6 ]4 |方式1:在 plot() 方法前,调用 clear() 方法8 [9 i& k' X, b" a# M0 C; h$ t8 O
    方式2:使用 self.graphicsView.plot.setData() 方法刷新数据,对应的数据清除方法也改一下,改成setData([])4 H( P6 ?5 ~1 B. R8 e
    3、参考 Audio Spectrum Analyzer 代码,优化多通道显示刷新方式- B2 s' i3 b- [9 O/ g" [( _- E5 F
    源工程运行前,需要安装的库,pyaudio使用pip安装会失败,使用管理员模式启用conda终端安装+ `: B5 Q5 Y) J# Q
       pip install opensimplex -i https://pypi.tuna.tsinghua.edu.cn/simple
    ) Q5 l* b  L4 P- c   conda install pyaudio -i https://pypi.tuna.tsinghua.edu.cn/simple
    3 K: N5 A: Y% K2 K8 B. D- i0 i1
    9 L  k9 l9 `: m; e+ e3 N7 ?25 Q8 S; c# M; F: |' M
    参考 self.traces = {}、set_plotdata() 数据结构和方法,优化多通道显示逻辑/ W/ ^( u: z; E7 Y# j) [5 N

    ; y) x: e5 @. _3 |* D右键RUN pyqtgraph_test.py,效果如下:, M% N5 `+ z$ b

    1 c( n  A; r: j% e! v$ G6 K; L( q
    文章知识点与官方知识档案匹配,可进一步学习相关知识
    4 F% }4 m! K3 q; Y5 e. B————————————————
    # \* h# _4 p( K3 c: K版权声明:本文为CSDN博主「HUIJIANG123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。! l: U, D2 E2 P4 s+ E) a
    原文链接:https://blog.csdn.net/u012928587/article/details/124547230
    ! {+ b6 t+ o! ]$ p' f- [6 ~* }1 E
    & v6 K0 ^1 ?7 |$ X5 I# k; o3 o" c  Q: B: g2 A8 r6 T* s
    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-8-6 23:12 , Processed in 0.306579 second(s), 51 queries .

    回顶部