QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2326|回复: 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
    8 a2 [, s4 q7 {5 ]" {
    Python UI设计学习笔记,在学习的UI框架中嵌入其他ui组件:增加组件到主画面的pages中
    - L  \3 n% E! G, h5 [: ?
    4 M8 h+ b, a1 E5 d" R4 a- s+ e1 A2 x( p7 r! M+ |+ `: t) ?2 E% c7 t0 h
    文章目录
    * z, B3 v3 G2 i, o! W  \在Pyside2中嵌入其他ui组件:增加组件到`pages`中,在`develop`分支中开发
    % W* `! _: o  `1 R- H组件1:`jupyter qtconsole`  p5 ?- J/ v0 s7 N" s5 B
    组件2:`matplotlib FigureCanvas for qtwidget`
    " S0 l5 x' c3 ^9 D0 y组件3:`pyqtgraph`
    1 E+ R0 b* k- H7 i( o: x5 q0 t在Pyside2中嵌入其他ui组件:增加组件到pages中,在develop分支中开发
    3 l8 A6 W! O, L' Y( ?: r4 Q以下组件部分测试测试参考:; k3 I2 e7 r( `8 ~0 a  `+ }" Y+ {$ E4 W" H
    ! H+ o, r+ A. _+ A- L' v9 \
    参考的B站视频
    7 K" M8 W/ A/ w& J1 A2 tqtconsole 官方文档:The Qt Console for Jupyter' x8 B5 N# R. C5 D6 L& x" K2 y, |
    组件1:jupyter qtconsole
    & b% m% j- ?( [# z1、安装 qtconsole 库, 经测试发现,该库目前不支持 pyside6, 所以更改解释器环境到 pyqt5 or pyside2
    3 @6 @' b7 d! }8 X' K    pip install qtconsole -i  https://pypi.tuna.tsinghua.edu.cn/simple
    " V; _& C2 F. ~! J7 \' e10 U/ c4 u9 z( n7 s& C' P+ @8 y
    2、尝试启动
    $ q% D! F# c( w4 n$ \: ~* u" n   jupyter qtconsole
    8 ^( E. |. M4 I2 n8 U6 a: x12 x7 {6 r5 ?7 F! x' ^8 h- ^
    ' c  p, E6 V: W0 ^6 @
    7 v6 G) N/ O& {9 C; Y) Z) H3 c
    3、尝试嵌入组件到pyside2 ui中
    3 s/ P! R. Z* v
    - e0 g6 ]+ X$ j/ H* m# r# Y3.1、复制参考的py代码 consolewidget.py 到 gui.widgets 文件目录下: S) k$ q5 M8 M5 h) Q
    2 T+ B+ b  S% [/ r( L  v8 z: o( }7 Z
    3.2、在Qt Designer 使用 Widget(基类/父类) promote to ConsoleWidget,并修改对象名称,操作如下图:' {0 L. V% S: U: ]. j% F4 j  N
    9 K9 K9 ^0 |2 |8 W/ [% n

    8 C& u/ x4 X9 C# F5 z5 O* n3.3、ui显示样式修改1: widget 样式表
    , ~) b; o+ ?' j% }. Q% u' Y6 ^8 ^/ k1 E" [  u! u
    /*设置父类窗体,背景边框等属性*/
    ; s+ [8 k0 Q: M- k; Z, U; _4 KQWidget {' [8 d- D  t2 ]" P4 y; i9 X1 h
            background-color: rgb(33, 35, 45);
    ! [7 H" D5 _" A% }) e# s% m" k        padding: 8px;$ A' Q6 L7 e; u0 ~! c
            border: 2px solid #c3ccdf;# C7 Q! Q' `# q
            color: rgb(255, 255, 255);
    + u9 \7 a( u: v. Q' u2 h, `) i        border-radius: 10px;
    * g0 q) ^2 k! ^6 k/ Q}
    6 m7 x3 p# }" J0 a" ^1 x1' x( G1 W8 s% j# R2 _2 i+ u- D
    2
    # a# X2 l6 Y% y6 m; d1 P% G3 q3! U" j. r7 g9 G6 f( [8 O
    4$ F' A( P6 y; p9 d" M/ a3 `, E
    5
    : q( n1 M: u/ {7 c! p6
    ) _* ]5 n% s: \7
    5 E# v7 P( y' P4 Z6 k2 Z/ \+ v8
    0 m; D$ U" [$ f( p2 i3.4、ui显示样式修改2:qtconsole启动界面风格指定
    % C9 _7 G. S! j/ a% b3 q9 {& v    self.set_default_style('linux')4 F& V& M3 R( A0 P
    1+ F& I* u* p# t0 V
    3.5、该窗口的实例化在uic自动生成的代码中! m# s) ~+ |& h, e/ ]
        self.ConsoleWidget = ConsoleWidget(self.frame_2)6 e/ r5 Z9 R& e
        self.ConsoleWidget.setObjectName(u"ConsoleWidget")
    + E3 |; N' t7 }3 s* T3 a5 a# a$ c1
    : E  r+ n! A$ d2! J9 }5 J& R" l, a8 n; a' d
    3.6、运行效果
    * {. U! p& b- d# U5 [" s' ^9 Z+ n/ ^5 M8 ^
    组件2:matplotlib FigureCanvas for qtwidget
    * b7 O/ G  S/ ?5 b) y0 L0 j1、安装相关库, 指定清华源; y# h6 c% n6 X! x8 G5 |- {
        pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple2 z+ B" o# D$ T
        pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple! W3 {, R% I" n
        pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple3 A& K9 M; X2 Z- q
    1, Q5 k; h& I- k. v  B
    25 E7 ]* b7 Y$ B% @
    3
    / e8 o  Q6 W8 E0 I8 uyoutube 参考视频; T$ }) o0 t- m2 q9 Q, E' D0 `* d
    网站教程
    - J! k) w( E1 \* ?3 jyoutube 参考视频: 不同主题风格调整方法,导入csv数据显示# e( H! G& X6 o% Y7 R
    2、 复制 MplWidget.py 文件到 gui/widget 目录下
    + Z# D! D- f& o  @( r3、测试 animation, Plotting Live Data in Real-Time
    . j7 M- f- [+ N. [6 R% U9 A4 t0 ?: D# A2 Y+ j+ s/ q9 i5 O
    测试方法:plot_live_data()% Z- \2 G' _0 F! \
    个人理解,animation 应该就是定义了一个与UI同线程的定时器。
    . n: x: Q7 ]- J5 L组件3:pyqtgraph
    3 C. H1 s+ a% J' @. P  @$ g8 p" G参考视频1
    6 Z" Q$ w1 y9 t4 V* f' T; L6 [4 U参考视频2et’s Build an Audio Spectrum Analyzer in Python! (pt. 3) Switching to PyQtGraph' y5 i* g* d* Q+ }/ f0 D( v

    / h% S/ S, h) L# |1、安装相关库, 指定清华源
    ! v/ i* l6 K" d3 b    pip install pyqtgraph -i https://pypi.tuna.tsinghua.edu.cn/simple# W) P# p8 B3 }1 B  \- A
    1& Q  Z7 W, S- V
    2、在 gui\widgets 目录中增加 pyqtgraph_test.py文件
    ! H, O3 ]) ]2 o增加 2个按钮(draw, clear) 和 1个pygtgraph窗口控件(PlotWidget) 布局
    ( O9 T: Q" v3 d) D5 L. U0 v定义刷新时间,帧率,每隔通道的数据记录最大长度等概念
    - U! z. E( E6 j; I/ B注意,每个点之间的采样时间实时性不是QTimer能保证的。5 j6 M; u3 a# Y* x7 X' ^
    还需要想清楚如何保证准确的采样时间,以及与数据刷新时间间隔之间的关系。(参考已有的scope的习惯)) s. W& }. J" B4 U8 ], @! Z8 W
    使用 QTimer 定时器, 实现动态刷新的功能, 60FPS -> 定时器时间间隔设定为 1000/60ms6 A( b4 e" ~# R* o* i
    调用 self.graphicsView.plot(self.y_vals) 绘图,但注意,重复调用相当于创建多个通道的曲线。如果只想显示一个通道的曲线,有2种方式8 q9 n4 N/ [5 Z* e. R
    方式1:在 plot() 方法前,调用 clear() 方法
    & `7 C8 G; F% K! n) B方式2:使用 self.graphicsView.plot.setData() 方法刷新数据,对应的数据清除方法也改一下,改成setData([])  V/ p2 ]8 B1 }6 z, g
    3、参考 Audio Spectrum Analyzer 代码,优化多通道显示刷新方式% [3 |9 w# N2 |* t3 `7 H
    源工程运行前,需要安装的库,pyaudio使用pip安装会失败,使用管理员模式启用conda终端安装! }% T: f7 A9 u1 N
       pip install opensimplex -i https://pypi.tuna.tsinghua.edu.cn/simple
    7 ?0 V8 x3 s: o   conda install pyaudio -i https://pypi.tuna.tsinghua.edu.cn/simple# A- u7 i* x2 T
    13 c' e  D' R, N8 |
    25 Y% W- q8 k' U# r2 S8 }% z  O2 ^# _
    参考 self.traces = {}、set_plotdata() 数据结构和方法,优化多通道显示逻辑( Y% B! z. o" [& B- d. j) A! Q
    - l% q' {2 Q% n6 T, w! v
    右键RUN pyqtgraph_test.py,效果如下:
    - K$ Q0 D' _7 b+ k, ?& ^
    : `0 }8 U. o1 M* ]: \  I0 g  j7 J- V% F2 i6 Z. H, \
    文章知识点与官方知识档案匹配,可进一步学习相关知识# N0 q( d0 j) ?# p2 u+ s
    ————————————————: I+ ^: Z' Y0 A) C
    版权声明:本文为CSDN博主「HUIJIANG123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。9 Z7 L6 J. @0 z) I+ L
    原文链接:https://blog.csdn.net/u012928587/article/details/124547230) V8 e" j6 [5 a

    ! r9 I/ h; C* E( w2 _' k1 w6 z& R/ u- l# z
    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-16 05:09 , Processed in 0.634727 second(s), 52 queries .

    回顶部