QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2325|回复: 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

    7 l7 ~7 N7 O4 _$ qPython UI设计学习笔记,在学习的UI框架中嵌入其他ui组件:增加组件到主画面的pages中$ y5 `% z5 K  L( p
    5 L! U7 S* f- u) M

    ' e3 V3 k- I# V1 A& g文章目录( J2 g. N& Y% c- t. j) `
    在Pyside2中嵌入其他ui组件:增加组件到`pages`中,在`develop`分支中开发
    9 j- O+ W( Y: h, X- ^9 O  s3 a, O组件1:`jupyter qtconsole`, s) C0 b. O6 d
    组件2:`matplotlib FigureCanvas for qtwidget`# I3 a8 R9 ^/ }- O% l' {! v
    组件3:`pyqtgraph`, s- Z3 A* U2 A" Z. u' N1 D7 d6 m
    在Pyside2中嵌入其他ui组件:增加组件到pages中,在develop分支中开发9 ^) j0 [% i6 i- F) o7 h) J/ Y' h: u
    以下组件部分测试测试参考:
    , k" d7 T  p# c; g$ q0 C+ z+ {9 z/ F$ C+ b2 J
    参考的B站视频3 w, E6 p3 d, s; n. Z! Y
    qtconsole 官方文档:The Qt Console for Jupyter& `  x3 F9 B3 d  T1 x
    组件1:jupyter qtconsole
    : G  V; F/ l- w) I8 E: q  ?5 n& A" _1、安装 qtconsole 库, 经测试发现,该库目前不支持 pyside6, 所以更改解释器环境到 pyqt5 or pyside2
    . N, z- I- z7 m/ j6 m) W3 J! h    pip install qtconsole -i  https://pypi.tuna.tsinghua.edu.cn/simple
    ! B/ A  d* _- Q: c2 c: F/ U* I1
    8 Y- M# i- t* m! i2、尝试启动
    9 i/ V% ]& j% V8 p   jupyter qtconsole1 V& m& p' j" I$ {% U/ P7 x
    1
    % C& T; ~3 b( r6 V8 X) w& B: u4 x( Y" F; p* \' n
    * E9 l2 w+ s, i  l$ K( Z
    3、尝试嵌入组件到pyside2 ui中
    ( m2 }, W3 r' }: I5 X
    . C/ P- m2 F# c# B# `3.1、复制参考的py代码 consolewidget.py 到 gui.widgets 文件目录下/ Q) x% E! G1 V/ k
    3 \( J2 V1 G* S: P" ?# F. ^( G0 d
    3.2、在Qt Designer 使用 Widget(基类/父类) promote to ConsoleWidget,并修改对象名称,操作如下图:9 o' g! v& h  W6 k
    $ Y2 `: ^1 M  J* ]6 T' S
    5 b! I! v$ C1 b+ U( x, i; G
    3.3、ui显示样式修改1: widget 样式表
    ! _& V7 t8 C/ g4 V( y+ q, A) A% m0 }# f5 g1 _" U& M7 T# k
    /*设置父类窗体,背景边框等属性*/
    & A1 i& X7 S- y" ~# v3 NQWidget {
    * Q5 a$ j2 y6 }        background-color: rgb(33, 35, 45);
    & q+ Q2 b3 E/ ~( q9 ?4 O5 j        padding: 8px;
    5 Q# ~; Q+ C9 O" r3 M& [5 ]  O        border: 2px solid #c3ccdf;% u% U7 X, v3 p2 ^
            color: rgb(255, 255, 255);% m( y: i8 c( ?3 l0 R
            border-radius: 10px;* g- |& `1 l# O
    }
    ) w8 H, f' T( a15 B2 P) a% o& i+ \* [- j
    2# j( Y% H1 `% h
    34 f0 z+ I. @* a* z6 g' v3 ?
    4
    , W- |0 a/ ]  C3 C' _, m- J5
    - R! N+ {! T: V# V: l- L$ s67 p" Q0 _4 w- h, I
    7
    # |# k$ W& O3 |/ G1 W3 ^  S8( s" G% T- O0 F  C
    3.4、ui显示样式修改2:qtconsole启动界面风格指定
    : [3 r! V5 s7 t2 a: F    self.set_default_style('linux')
    0 ]; G$ ~% i6 s& Z, D1: e! J: P5 t. }% y) L
    3.5、该窗口的实例化在uic自动生成的代码中
    ! V; d  {! Q6 r, r    self.ConsoleWidget = ConsoleWidget(self.frame_2)
    7 s- }7 a- u, p) t' C. r3 z5 Q- [    self.ConsoleWidget.setObjectName(u"ConsoleWidget")) i2 ~/ w  @% b  P& n9 O- o
    18 {& b1 s& h  }  z3 d$ O
    29 P$ n* H  ?* S# \; h1 m4 u
    3.6、运行效果% X  |: o7 {( y) h
    & J; N3 Z' G8 f9 T
    组件2:matplotlib FigureCanvas for qtwidget5 }- ~" d# \: {0 }# l* K
    1、安装相关库, 指定清华源* R" v  I% }' K* r
        pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
    1 C6 M3 y8 ~+ U8 G/ [8 [    pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
    9 i8 S: {. [: L8 m: [* Z! w    pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple+ Z) P- C$ ^2 |7 w! T
    1$ C4 V! G; o2 B1 _! }6 d; Q, v
    2- b) \, U5 p+ ^
    3
    + n8 Y& ^& p5 [( t3 N! Kyoutube 参考视频/ Y' o7 ]2 q6 o/ y7 O: M9 \
    网站教程  T. w' [& Q' t; U4 ^
    youtube 参考视频: 不同主题风格调整方法,导入csv数据显示0 r- G$ Q) \# B- m
    2、 复制 MplWidget.py 文件到 gui/widget 目录下: T0 }- u/ C/ C5 K' Q2 j) e
    3、测试 animation, Plotting Live Data in Real-Time
    / E% p9 h7 F" {1 L4 A  e  o% z3 A6 o* ~2 j" Z
    测试方法:plot_live_data()! ^- i* E9 q3 n- G( m. ?7 w4 J) @
    个人理解,animation 应该就是定义了一个与UI同线程的定时器。
    4 P$ @7 r% d+ p7 _: C6 x组件3:pyqtgraph
    0 n4 e8 Y  n- V参考视频1  n  n1 W* h( I/ y* ~2 D. ]. F6 \& B
    参考视频2et’s Build an Audio Spectrum Analyzer in Python! (pt. 3) Switching to PyQtGraph$ x) I% A( |) K  b

    4 B( j2 N$ [( H$ b, F" L1、安装相关库, 指定清华源, v- H8 ?" _$ S
        pip install pyqtgraph -i https://pypi.tuna.tsinghua.edu.cn/simple
    9 G" E* D6 Y2 |2 [( n5 p1
    7 D8 v' o5 E% Q7 ]* e& T3 N2、在 gui\widgets 目录中增加 pyqtgraph_test.py文件
    3 q& b0 ^6 c- b3 y2 `2 X0 ~增加 2个按钮(draw, clear) 和 1个pygtgraph窗口控件(PlotWidget) 布局9 S7 m8 F  S4 m' l, M* S; R
    定义刷新时间,帧率,每隔通道的数据记录最大长度等概念1 E* L- ^3 F5 g( E9 b0 X" H
    注意,每个点之间的采样时间实时性不是QTimer能保证的。
    + d0 O$ y* ^7 \. F- J! e. G还需要想清楚如何保证准确的采样时间,以及与数据刷新时间间隔之间的关系。(参考已有的scope的习惯). A0 }5 t/ y8 R
    使用 QTimer 定时器, 实现动态刷新的功能, 60FPS -> 定时器时间间隔设定为 1000/60ms& n3 h7 e7 {" ?
    调用 self.graphicsView.plot(self.y_vals) 绘图,但注意,重复调用相当于创建多个通道的曲线。如果只想显示一个通道的曲线,有2种方式
      l' H" C; B3 F# _方式1:在 plot() 方法前,调用 clear() 方法" T$ p( Y! R6 C3 @
    方式2:使用 self.graphicsView.plot.setData() 方法刷新数据,对应的数据清除方法也改一下,改成setData([])# u9 g  v$ {( z$ _  a1 i
    3、参考 Audio Spectrum Analyzer 代码,优化多通道显示刷新方式
    5 e; d2 U) V8 ~5 I! e源工程运行前,需要安装的库,pyaudio使用pip安装会失败,使用管理员模式启用conda终端安装
    $ C# s. w/ I/ A" e' }   pip install opensimplex -i https://pypi.tuna.tsinghua.edu.cn/simple- @9 m/ S/ d- d# T
       conda install pyaudio -i https://pypi.tuna.tsinghua.edu.cn/simple  G1 U6 V) B5 ?- G3 c1 |
    19 u' M. Q) ]% ]' L/ z
    2
    1 z9 N2 M( g) O8 ~/ |) P  G/ j5 f参考 self.traces = {}、set_plotdata() 数据结构和方法,优化多通道显示逻辑. ]5 }( L5 i8 I- F/ n+ w  N8 h
    ; j, s) N4 [5 h7 ^7 P- U' t
    右键RUN pyqtgraph_test.py,效果如下:( W4 C6 P, B* w0 n2 o9 [
    2 b" B" J5 g6 `
    1 S+ e! {0 j" ~% {2 T: ]
    文章知识点与官方知识档案匹配,可进一步学习相关知识
    0 Y- [* B# ~, Q% _————————————————
    & @! g9 R' w. w3 e+ O版权声明:本文为CSDN博主「HUIJIANG123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。) E. o* h. w# K
    原文链接:https://blog.csdn.net/u012928587/article/details/124547230( \/ |! G8 _; a3 o
    + c" ?  C1 Z! _6 r
    , B! _- N' I( ]$ d% P
    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-6-14 22:53 , Processed in 0.378174 second(s), 51 queries .

    回顶部