QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2327|回复: 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
    / R5 X/ a% N% t) |) _% ]
    Python UI设计学习笔记,在学习的UI框架中嵌入其他ui组件:增加组件到主画面的pages中
    * r. @/ X( O9 E! _1 r3 k7 `* {& K% x: r( ?2 z5 k  H5 Q
    7 ], {3 f* J/ ?9 q' |/ `* I/ I, E
    文章目录/ @& A; t8 }' ]8 `1 Y
    在Pyside2中嵌入其他ui组件:增加组件到`pages`中,在`develop`分支中开发* F: e1 U! Z" i+ ^) @
    组件1:`jupyter qtconsole`
    1 R6 l! `( V( X9 Z6 o  ~组件2:`matplotlib FigureCanvas for qtwidget`7 D! f1 e, v- {, n4 @( i: @+ z
    组件3:`pyqtgraph`& d* r! f8 c- l" {0 F0 I( z# ^
    在Pyside2中嵌入其他ui组件:增加组件到pages中,在develop分支中开发) k5 X& R5 b9 o. U+ T/ d4 @
    以下组件部分测试测试参考:
    6 S9 c: d5 W; s' t% `, s4 b" G! P1 ], M% [' @! X
    参考的B站视频# x' {* d( P3 f* T  W& U0 P8 J( M
    qtconsole 官方文档:The Qt Console for Jupyter
    2 e6 V: f0 p( W8 A) n8 j3 f组件1:jupyter qtconsole
    . b% ?) R' D4 Q5 ]/ b& m; _1、安装 qtconsole 库, 经测试发现,该库目前不支持 pyside6, 所以更改解释器环境到 pyqt5 or pyside2
    ) g6 B  j. G6 l; e9 t& W& ^3 S    pip install qtconsole -i  https://pypi.tuna.tsinghua.edu.cn/simple
    1 S" y+ [" z) ]+ q/ t2 H; t1
    . E4 o/ h9 n- T0 s5 K2、尝试启动
    , Y2 [, D) k5 O7 n+ C3 K$ i9 g. Z   jupyter qtconsole4 l  y/ W/ c6 g$ X$ }# a) |
    1- r% p/ O" ^4 r5 l

      I5 {! x4 H7 C* I  G( X# \, ~5 f  x) d" F
    3、尝试嵌入组件到pyside2 ui中, s+ C4 R; j) a2 G

    0 Z+ n( D$ Z: ^, c  j& n3.1、复制参考的py代码 consolewidget.py 到 gui.widgets 文件目录下( ~1 D% I1 }* r8 X3 f& S: n
    1 [' [$ @) D8 B! B
    3.2、在Qt Designer 使用 Widget(基类/父类) promote to ConsoleWidget,并修改对象名称,操作如下图:, |) S6 U- A3 ^9 k# ?
    / \# K+ |8 }! d! h  L# O* E% U
    6 w2 i$ G* M: Q6 W( I# M) V
    3.3、ui显示样式修改1: widget 样式表
    : Z/ Z' r) |. Q; i3 Q' v0 b. j9 b
    /*设置父类窗体,背景边框等属性*/
    & `& ]1 _+ y, L8 N3 ]: O5 z( ZQWidget {
    7 x! e  g9 I; |( W* I% I+ g4 L        background-color: rgb(33, 35, 45);: W1 c5 R. h. s; C8 v
            padding: 8px;
    - i; y/ Y& H& r. L7 H' A- u        border: 2px solid #c3ccdf;6 o4 d/ c" ?3 z4 t
            color: rgb(255, 255, 255);
    2 B0 G1 p8 a' |' E3 U$ u4 s        border-radius: 10px;
    , u. d4 D1 _3 m- G& n}
    3 Q/ J. O" ^7 [0 k. d; B9 ^  f1+ T4 P4 E& m3 _' N4 ]' e. S
    2' D$ R) o: [& p  o9 J0 c/ x1 _
    3
    - Q/ N" D& ~; S# c4* I; W9 z5 }% N: d( z# }8 W
    5
    " L# {# Z. h. Z9 u6" ^  o& g1 `3 c. F" ?* @: k& s
    75 @! u0 ~) V3 m) @
    88 H9 z( A8 a; [' @7 f/ l
    3.4、ui显示样式修改2:qtconsole启动界面风格指定& D/ {- q5 j& y$ C1 c2 `0 x
        self.set_default_style('linux')
    ) b0 n& l2 g5 |' A15 z: v3 c+ f' F: j8 E( d$ @
    3.5、该窗口的实例化在uic自动生成的代码中% @2 v% _3 I+ u; N. m
        self.ConsoleWidget = ConsoleWidget(self.frame_2)9 q) k5 I+ A2 T
        self.ConsoleWidget.setObjectName(u"ConsoleWidget")
    3 O! W2 O) u+ ~5 G/ V& s1
    8 v1 h( V2 i* s2
    . l  Q* U! U6 l, g6 n' N3.6、运行效果1 F% B1 q" ~8 N# S! ~3 P# b% e

    . K1 t7 r" N8 f1 x组件2:matplotlib FigureCanvas for qtwidget1 p7 U; |& \% d' |# J0 R: {
    1、安装相关库, 指定清华源# h+ h! P, D8 y2 G2 V
        pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple# e: e8 d* T1 y) ^  a+ \4 A
        pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
    " x% V6 ~8 T7 |+ j# M( b. M1 A; d! D    pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
    ) j" g  C8 z: \; m' ]19 P2 V! R  p$ w
    2
    4 w4 H: E" @3 N9 `2 p37 b- W# C; m" ]$ J, D# h7 |4 K6 p
    youtube 参考视频9 U! \+ u3 Z3 A& [: g& z% v, Y
    网站教程
    5 x0 @  Z! S( wyoutube 参考视频: 不同主题风格调整方法,导入csv数据显示
    ) ]6 P! R( R, N2、 复制 MplWidget.py 文件到 gui/widget 目录下. S6 i0 q& A5 g6 X- H
    3、测试 animation, Plotting Live Data in Real-Time+ z# R# [; h5 {

    $ Q! [$ P3 e4 T, M4 l* X2 B* P. c测试方法:plot_live_data()
    1 e: L7 G9 N% G2 Q- Y个人理解,animation 应该就是定义了一个与UI同线程的定时器。# U, W8 T3 S( a) I+ v
    组件3:pyqtgraph
      D/ y4 |6 y9 x3 @2 Z3 g参考视频1
    $ c0 F- |! Y( w2 i" h3 {参考视频2et’s Build an Audio Spectrum Analyzer in Python! (pt. 3) Switching to PyQtGraph4 i2 ^$ x/ Q& ?- I* d

    ; Y( Y0 n0 G# r& B+ V1、安装相关库, 指定清华源
    3 u9 e, o! k, N  `& _9 R: l/ Y    pip install pyqtgraph -i https://pypi.tuna.tsinghua.edu.cn/simple
    - {1 {% p& w+ d# w( M+ ]; e15 b' }1 f, a9 n9 ]* O6 U( Z. q( l
    2、在 gui\widgets 目录中增加 pyqtgraph_test.py文件
    6 }! @% H9 {* \# X$ e增加 2个按钮(draw, clear) 和 1个pygtgraph窗口控件(PlotWidget) 布局2 w" [6 `0 o& y) h
    定义刷新时间,帧率,每隔通道的数据记录最大长度等概念
    5 g/ }4 v5 }& Y" ^* T3 z! @注意,每个点之间的采样时间实时性不是QTimer能保证的。
    + q6 Z! m- o8 q# ?+ _. q+ `$ t; S; O还需要想清楚如何保证准确的采样时间,以及与数据刷新时间间隔之间的关系。(参考已有的scope的习惯)2 \( ]) I- d' d5 h6 o
    使用 QTimer 定时器, 实现动态刷新的功能, 60FPS -> 定时器时间间隔设定为 1000/60ms) E" q# N5 e# k
    调用 self.graphicsView.plot(self.y_vals) 绘图,但注意,重复调用相当于创建多个通道的曲线。如果只想显示一个通道的曲线,有2种方式
    ' t- M3 q; f2 L+ M, Y% G方式1:在 plot() 方法前,调用 clear() 方法
    - A2 a: A8 f, Z. s3 P8 O/ G7 j方式2:使用 self.graphicsView.plot.setData() 方法刷新数据,对应的数据清除方法也改一下,改成setData([])
    6 E+ e  L7 B( p3、参考 Audio Spectrum Analyzer 代码,优化多通道显示刷新方式' F' O6 y5 ?  Z" o  P6 q& v
    源工程运行前,需要安装的库,pyaudio使用pip安装会失败,使用管理员模式启用conda终端安装
    % R  ]: O! Y* O: c   pip install opensimplex -i https://pypi.tuna.tsinghua.edu.cn/simple* H5 {& r7 f7 |( a5 a
       conda install pyaudio -i https://pypi.tuna.tsinghua.edu.cn/simple( G. w, c# m: J2 c- {
    1
    % C; N- ?# n+ C- Z8 s% u% a2
    : H" w. i" E7 w, u. B4 z9 D6 b7 Z' @参考 self.traces = {}、set_plotdata() 数据结构和方法,优化多通道显示逻辑
    , n/ p1 R) B/ h/ g  z6 Y5 e, ~; J" X% m# r8 i3 h# Y( |. j5 f" y1 T
    右键RUN pyqtgraph_test.py,效果如下:
    - ~+ J4 D! {3 @3 _; X; ], u8 X' E% D( G* J( S6 S* {
    . Z! a; h/ b, p/ Q8 u: K! T& l" g/ [
    文章知识点与官方知识档案匹配,可进一步学习相关知识
    ! @6 R9 Q. X  I! b! \————————————————1 B4 L8 N* }0 t$ T2 x
    版权声明:本文为CSDN博主「HUIJIANG123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。. J1 {4 v9 G1 i
    原文链接:https://blog.csdn.net/u012928587/article/details/124547230! p" |, _9 w% L! F* g0 N" ?1 j
    + K4 O! x: S/ b6 G* @

    ! q, C! c5 p+ q9 I4 V
    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 12:05 , Processed in 0.439980 second(s), 50 queries .

    回顶部