QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2304|回复: 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
    * K$ W: ?, V4 }9 w2 n- E5 s
    Python UI设计学习笔记,在学习的UI框架中嵌入其他ui组件:增加组件到主画面的pages中
    " J. |" }5 T/ \- @2 a
    9 j' Y6 l) ]2 N! }* N
    6 M! i3 s, ~  a: K文章目录, J3 L3 x2 A3 C2 k
    在Pyside2中嵌入其他ui组件:增加组件到`pages`中,在`develop`分支中开发
    * R- U% B- U8 E2 w8 S0 h" n组件1:`jupyter qtconsole`
    9 K% y7 G2 _! E5 H组件2:`matplotlib FigureCanvas for qtwidget`& y6 \* }5 ]6 F7 q6 z) ]( b2 |
    组件3:`pyqtgraph`
    8 e  p2 d+ |6 g) K在Pyside2中嵌入其他ui组件:增加组件到pages中,在develop分支中开发0 {" V3 G/ ~/ q. R' _* T( Y
    以下组件部分测试测试参考:3 B( l# h. [$ p+ {* A+ P9 r

    ! Q% u( _; K5 c* @; x+ j4 A3 `( `参考的B站视频" M2 e4 f& F) @8 i
    qtconsole 官方文档:The Qt Console for Jupyter6 b, H5 P0 Q+ M
    组件1:jupyter qtconsole$ w6 F2 p9 a2 z' e
    1、安装 qtconsole 库, 经测试发现,该库目前不支持 pyside6, 所以更改解释器环境到 pyqt5 or pyside29 L8 R6 |+ |" T4 C0 q
        pip install qtconsole -i  https://pypi.tuna.tsinghua.edu.cn/simple* _; H/ J2 y) [; F" D
    1% w7 h' O* y! _  |: x
    2、尝试启动2 M  b3 |; T4 }% z, j6 u0 X7 K: A# b
       jupyter qtconsole
    8 Z4 k, R+ ^% c2 y$ f- m15 V# o) z& p+ S
    3 D$ H' d" i8 g1 s1 n: w

    4 x# F' b! [1 E8 g) T3、尝试嵌入组件到pyside2 ui中
    . J: E! E: S3 R# M. C5 B- C
      S1 s+ |6 o8 q( ^* n* \7 g3.1、复制参考的py代码 consolewidget.py 到 gui.widgets 文件目录下
    ; [" S: x" c) f2 I. z, r
    5 o8 x7 Y( B& L' ]3.2、在Qt Designer 使用 Widget(基类/父类) promote to ConsoleWidget,并修改对象名称,操作如下图:( Q: A+ j! m0 E( q8 W% l
    ! _9 Y& U% m/ Y

    " x  g, S# @  Z: {9 G3 A1 l. j- D# h3.3、ui显示样式修改1: widget 样式表
    , T% \( Q9 B* n# y
      p$ u. R0 v  m/*设置父类窗体,背景边框等属性*/" u8 ]% g# v* E8 Q
    QWidget {. t  c& W  K* I) n
            background-color: rgb(33, 35, 45);
    % w& Y7 e% M0 i- ]1 E9 o5 _        padding: 8px;
    4 j& K; Z/ |# ?3 g/ d        border: 2px solid #c3ccdf;
    4 t6 [* ^5 _6 _' @$ G        color: rgb(255, 255, 255);6 a3 F" w* e" w6 U( g
            border-radius: 10px;
    8 x$ K2 b  I& c}
      |( B- w+ e' X7 U/ w  G1
    2 j7 e) a- H' b( @2
    0 {, P" X" o2 T6 [, [3
    9 l7 B& h- d- |# Y; T& k* a46 ~+ U' H  K/ g9 z& Q' Y9 j3 [/ [
    56 j( L" N9 j# f6 X) e/ s8 Z
    67 ]% [. f1 p: M& I* O$ _3 K* X
    7
    + k" P: ^6 [  L* j" g8) f( W" W5 i( T- C3 q/ p, `0 t
    3.4、ui显示样式修改2:qtconsole启动界面风格指定, Y5 Y; ~0 @) D# Q
        self.set_default_style('linux'); `% R/ w8 Q) `( f' }* @
    17 Z. c5 c  `/ y# @
    3.5、该窗口的实例化在uic自动生成的代码中# a- z) W2 _) s" {) I7 G! L; F
        self.ConsoleWidget = ConsoleWidget(self.frame_2)9 [: R/ p. n0 w+ x  l- G5 ?
        self.ConsoleWidget.setObjectName(u"ConsoleWidget")9 J3 J' |* w7 b+ Y3 f
    1: M! ^# V5 t5 S9 i9 X/ S
    2
    * B# Z1 b! Y6 y5 E- X; m& p3 q3.6、运行效果
    , x% {* e" {* V# @6 B: s
    ( O- |" e% d5 A% Y! G组件2:matplotlib FigureCanvas for qtwidget
    $ x: p' h  y" ~% ]1、安装相关库, 指定清华源$ b% h9 H+ }# B; H: |
        pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
    4 e4 v& Y# v, ]& h# p& D7 V. q    pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple! Y/ ]# l/ q  l  M0 |+ q/ q
        pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
    $ D- S) q2 j  n  L1 v% E6 B1. X' u& X4 x6 ?7 \
    2
    % N  Q  M0 `% K$ K3; Q5 U  c# {4 y$ w" ?) D2 q1 O
    youtube 参考视频, q: j" L& d4 c7 z3 V
    网站教程3 {( b1 F% D0 @! t) u) w
    youtube 参考视频: 不同主题风格调整方法,导入csv数据显示
    2 }! I8 _5 g/ _6 z2、 复制 MplWidget.py 文件到 gui/widget 目录下
    5 ~, W; m- P2 Q0 e5 o9 r: p8 M3、测试 animation, Plotting Live Data in Real-Time% X2 G; ?' W0 ~: I& I: \: b2 D

    % J; \0 i" G3 E; j测试方法:plot_live_data()
    - o  q+ j5 Q0 n( E& ]个人理解,animation 应该就是定义了一个与UI同线程的定时器。& F3 Y) D5 p- u( N2 W: [8 x
    组件3:pyqtgraph
    7 K, p) X+ e9 a" G- X参考视频10 v! m, z, y1 R/ R& y8 F" l0 f
    参考视频2et’s Build an Audio Spectrum Analyzer in Python! (pt. 3) Switching to PyQtGraph5 L' H' _" C+ [. v$ ?0 |
    8 k& f0 _+ k- N; J- C) e
    1、安装相关库, 指定清华源% ?/ y- {: y0 h# V" l
        pip install pyqtgraph -i https://pypi.tuna.tsinghua.edu.cn/simple
    : F2 D+ _# P0 h" v1
    $ H6 D, e& `! C2、在 gui\widgets 目录中增加 pyqtgraph_test.py文件( o; |9 e; V# f$ I
    增加 2个按钮(draw, clear) 和 1个pygtgraph窗口控件(PlotWidget) 布局8 r6 I) e) X0 v
    定义刷新时间,帧率,每隔通道的数据记录最大长度等概念( u  e8 G5 F% c3 H) Z
    注意,每个点之间的采样时间实时性不是QTimer能保证的。
    : ]% G* ]4 _- W6 L" e% G& n还需要想清楚如何保证准确的采样时间,以及与数据刷新时间间隔之间的关系。(参考已有的scope的习惯)
    ; K( e) |& H/ W3 P5 }! n6 Z, m* U使用 QTimer 定时器, 实现动态刷新的功能, 60FPS -> 定时器时间间隔设定为 1000/60ms  Q6 ]" c/ _7 L( c7 J5 ]+ G; i
    调用 self.graphicsView.plot(self.y_vals) 绘图,但注意,重复调用相当于创建多个通道的曲线。如果只想显示一个通道的曲线,有2种方式
    ) V1 j  ^) {8 N* s方式1:在 plot() 方法前,调用 clear() 方法5 I8 ~* ^# v& e0 {+ Y8 q- c) ~
    方式2:使用 self.graphicsView.plot.setData() 方法刷新数据,对应的数据清除方法也改一下,改成setData([])8 U, L. K; L0 j8 y; ~& q
    3、参考 Audio Spectrum Analyzer 代码,优化多通道显示刷新方式$ I2 f! [9 G, P- ]7 P5 E
    源工程运行前,需要安装的库,pyaudio使用pip安装会失败,使用管理员模式启用conda终端安装9 z! C8 v: i: S( ^! b2 `
       pip install opensimplex -i https://pypi.tuna.tsinghua.edu.cn/simple
    $ X$ F# E; Q1 V+ n6 S# G0 |0 B, Q) D   conda install pyaudio -i https://pypi.tuna.tsinghua.edu.cn/simple9 g6 s, e% r- O6 Z1 s7 T
    1
    * ?+ l- ]1 h0 `9 \; q2! s! S! c7 N8 o
    参考 self.traces = {}、set_plotdata() 数据结构和方法,优化多通道显示逻辑( w4 h/ b' c  W! |
    % M" O9 q, Y* `) M, k0 L2 x: m
    右键RUN pyqtgraph_test.py,效果如下:8 w. q2 p& u; x- Q" j
    , s7 a8 V* L; M
    # p1 E* v6 N5 ?& z$ Q  Z  L
    文章知识点与官方知识档案匹配,可进一步学习相关知识- G9 |# T0 q2 U: T
    ————————————————
    6 y4 b2 ^2 D- M8 k3 X1 i1 i) ]版权声明:本文为CSDN博主「HUIJIANG123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。" S! K( x) x" K' d
    原文链接:https://blog.csdn.net/u012928587/article/details/1245472300 w( |# j3 Z7 L3 m0 z. m( H) Z

    - {1 O5 v8 f; E+ @$ V/ ^0 ]
    5 E4 g. f: V1 C( {! U0 }
    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 15:07 , Processed in 0.321339 second(s), 51 queries .

    回顶部