QQ登录

只需要一步,快速开始

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

    5 T# z) o) W. ~; qPython UI设计学习笔记,在学习的UI框架中嵌入其他ui组件:增加组件到主画面的pages中
    0 x' \8 m- J; e& \4 B( e) h' I5 R
    5 k6 c. \0 J6 r. U  N# z
    3 I9 P( B3 B- V& r9 J文章目录) N6 c  ~0 o( g* D. o
    在Pyside2中嵌入其他ui组件:增加组件到`pages`中,在`develop`分支中开发" J" W6 @- r" o$ V2 T/ k
    组件1:`jupyter qtconsole`
    2 N: T# ^, V+ m: n. L组件2:`matplotlib FigureCanvas for qtwidget`
    + Z  y$ t0 k. `组件3:`pyqtgraph`" \# H. W: k7 Z  L
    在Pyside2中嵌入其他ui组件:增加组件到pages中,在develop分支中开发
    0 L9 K: T* O, f以下组件部分测试测试参考:3 u/ K! _8 }6 U2 M6 l

    # i4 q9 Z! t4 V. p& R8 i2 t5 t参考的B站视频# f' s. |0 \0 y& j2 C6 e, L' E
    qtconsole 官方文档:The Qt Console for Jupyter* L7 `3 f  r# b
    组件1:jupyter qtconsole# f2 s& Y8 j$ V3 R4 J
    1、安装 qtconsole 库, 经测试发现,该库目前不支持 pyside6, 所以更改解释器环境到 pyqt5 or pyside25 u- n( l0 c" k, S1 W* g# \6 I
        pip install qtconsole -i  https://pypi.tuna.tsinghua.edu.cn/simple
    # S2 b1 e5 u, y$ r7 }- z& }1+ G& e% x5 ^& ?6 {8 u$ c
    2、尝试启动
    + t2 K4 O4 g* w. E* ]3 @   jupyter qtconsole6 }. E. v; l/ a( z- \
    1" {& t5 S$ y/ p  M1 y4 _1 B8 P6 z

    7 B! q( e, I, m& x8 r/ X5 G0 l; p" e; l1 d/ e$ z" H- s
    3、尝试嵌入组件到pyside2 ui中! C- R: J! r7 _4 \' T8 g0 _" R
    $ J. N' p1 ^2 D7 A
    3.1、复制参考的py代码 consolewidget.py 到 gui.widgets 文件目录下
    8 M  h0 ?+ B3 ?' w! m
    : P) y8 w3 b. w! |3 l. c3.2、在Qt Designer 使用 Widget(基类/父类) promote to ConsoleWidget,并修改对象名称,操作如下图:
    . k! D: b! y+ x- v; t3 Z( F6 D! {  j, D: {' {) J! ~3 E9 U" e4 [
    8 i8 t. W( r0 x7 X: ?. B$ _
    3.3、ui显示样式修改1: widget 样式表
    $ D. K- n: z6 s2 L$ O- H& d3 L# h4 `9 _% b3 d; l: _
    /*设置父类窗体,背景边框等属性*/
    " v0 q& H5 F" v- {* C0 Y: X. XQWidget {- o8 L3 t1 D2 i2 ?- J
            background-color: rgb(33, 35, 45);
    3 J- U- W, L; T  e        padding: 8px;% n+ w1 V- s0 A) e2 L1 _
            border: 2px solid #c3ccdf;
    6 J( z1 I5 s: }) {        color: rgb(255, 255, 255);
    + w  I" A$ F. G0 W+ o3 G        border-radius: 10px;" L6 D1 t5 u+ o* E
    }8 K9 E7 h& D* I4 }; M
    1
    * t" C  c  q# }  q6 N5 T% E: j27 L2 c# R8 Q7 I) D2 Y
    3
    . v$ K* r! L, E9 O& h% e49 n9 m6 L! v  f: X+ D& I! `3 w
    5/ X1 j1 C" }" m. s! V. B
    6
    # q4 @! r9 w; r$ H% H3 H5 c7
    8 k3 W: a2 l  V4 C7 P8* y9 z- ~& K' ^* F8 N2 y
    3.4、ui显示样式修改2:qtconsole启动界面风格指定! ?: u- {8 I, [+ J6 D, s
        self.set_default_style('linux'). j% t% M3 E4 ~1 d2 K( \
    1
    % U: k1 U! n" }- ]: d3 F3.5、该窗口的实例化在uic自动生成的代码中% U, f! s3 Z2 ?* w
        self.ConsoleWidget = ConsoleWidget(self.frame_2)
    , f2 i7 t# x6 E    self.ConsoleWidget.setObjectName(u"ConsoleWidget")
    7 u( ]: G$ D, Y1% ~* i  B* h4 T) q8 _
    2
    9 O8 g! C% [( D" ]3 i$ M! Z' `0 s3.6、运行效果0 x+ G3 I. n2 j! I! Y" \1 o8 ?
    2 y2 P  j) f7 R: V) r4 ~& [
    组件2:matplotlib FigureCanvas for qtwidget  C( C; X4 A  w9 a- U* F0 U. N& t
    1、安装相关库, 指定清华源
    / O/ G$ `- G# L, ]0 q: J    pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple- S' f" ]" G& a) w
        pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
    ; F* m7 ?! Y" s' `) D    pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
    * K. a6 Z9 R8 l, @9 q  i2 J1
    0 q* o, f; N' X( H2
    % }; f) F9 ?) v  |4 v$ v) A3 q( U0 }3- x- v) d, V/ k8 s6 x
    youtube 参考视频& M7 C- T1 k' _
    网站教程
    / x6 D1 v9 A" C& U$ K0 X/ dyoutube 参考视频: 不同主题风格调整方法,导入csv数据显示
    # L: v  b% @8 n/ f5 ]2、 复制 MplWidget.py 文件到 gui/widget 目录下' I' d/ Y/ j! @1 J! M
    3、测试 animation, Plotting Live Data in Real-Time
    $ [7 U, e) Z- B& d# z
    6 ?. h6 h# U" e* S- [1 M2 R测试方法:plot_live_data()$ R# x' G6 q2 u* q
    个人理解,animation 应该就是定义了一个与UI同线程的定时器。8 [2 C% B, M( o/ ]
    组件3:pyqtgraph4 G. t7 @( s  y# F
    参考视频1
    1 P  j- g4 ]9 E/ \1 Q! K+ ?参考视频2et’s Build an Audio Spectrum Analyzer in Python! (pt. 3) Switching to PyQtGraph; \6 E3 D; k. d9 q6 R, R  v
    8 j6 k% e2 h# V1 R8 V
    1、安装相关库, 指定清华源
    & Q2 y; M8 r* J, C/ k    pip install pyqtgraph -i https://pypi.tuna.tsinghua.edu.cn/simple
    . V% Q- c0 P/ j1
    * z2 U1 |5 C  k1 x% G7 {4 q2、在 gui\widgets 目录中增加 pyqtgraph_test.py文件
    9 S6 g5 O. S3 I- y2 Z. d2 @增加 2个按钮(draw, clear) 和 1个pygtgraph窗口控件(PlotWidget) 布局$ a" y0 U6 U3 l; @
    定义刷新时间,帧率,每隔通道的数据记录最大长度等概念
    7 Y6 C& \0 i* |& t! b* V注意,每个点之间的采样时间实时性不是QTimer能保证的。# t/ L6 A; q# n2 v- |  F
    还需要想清楚如何保证准确的采样时间,以及与数据刷新时间间隔之间的关系。(参考已有的scope的习惯)/ r0 \, \& Q$ b' T: u
    使用 QTimer 定时器, 实现动态刷新的功能, 60FPS -> 定时器时间间隔设定为 1000/60ms
    ) l  z+ O9 H0 G) R" H调用 self.graphicsView.plot(self.y_vals) 绘图,但注意,重复调用相当于创建多个通道的曲线。如果只想显示一个通道的曲线,有2种方式9 V" ?* _1 D5 z( j
    方式1:在 plot() 方法前,调用 clear() 方法
    * o9 a+ Q  _% Q2 C- S( q4 z; ^$ c方式2:使用 self.graphicsView.plot.setData() 方法刷新数据,对应的数据清除方法也改一下,改成setData([])
    3 M0 N1 n( J4 _$ E) x* j3、参考 Audio Spectrum Analyzer 代码,优化多通道显示刷新方式2 X" L+ r  H1 S, Z; ~
    源工程运行前,需要安装的库,pyaudio使用pip安装会失败,使用管理员模式启用conda终端安装2 V3 J* p+ ^4 i! c/ I# k, y
       pip install opensimplex -i https://pypi.tuna.tsinghua.edu.cn/simple) U. w, @$ A9 A
       conda install pyaudio -i https://pypi.tuna.tsinghua.edu.cn/simple
    & B* z6 y8 J7 q7 r1. O* X0 V: A* w5 c* [/ A
    2
    % t3 F" G( z: D- b, e8 s参考 self.traces = {}、set_plotdata() 数据结构和方法,优化多通道显示逻辑% z. U: V, j/ E+ ?' d8 ]
    9 p7 U9 p5 e1 V5 L4 {) t( l: U
    右键RUN pyqtgraph_test.py,效果如下:) N# I# u9 `7 c5 t* b+ @

    ' u  s( r. l# `; M' e
    1 j$ N  x2 f8 N, ~* a7 E7 ~" Y文章知识点与官方知识档案匹配,可进一步学习相关知识/ w2 v3 \% ]  ^( H# z- X
    ————————————————. Q9 A2 R3 c% ?
    版权声明:本文为CSDN博主「HUIJIANG123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。! l6 l  o. _+ M9 s: z
    原文链接:https://blog.csdn.net/u012928587/article/details/124547230  t9 L6 u% ~% F% a; q1 C2 S
    " @& c! C% R" [5 H- ?

    ! `) ]$ \' F6 D& n: ^
    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-26 15:45 , Processed in 0.427913 second(s), 51 queries .

    回顶部