QQ登录

只需要一步,快速开始

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

    + J% e* X* g9 e7 C8 wPython UI设计学习笔记,在学习的UI框架中嵌入其他ui组件:增加组件到主画面的pages中, F' [+ C$ }) P1 Q. n( r
    3 v4 F. N" `2 s1 l

    : a! B: b7 }8 l4 J文章目录1 g' k7 i. d3 z0 K, Y8 f
    在Pyside2中嵌入其他ui组件:增加组件到`pages`中,在`develop`分支中开发! Q$ [8 @& O+ [& U: i& ?) Z- Q
    组件1:`jupyter qtconsole`' q2 W; u8 `: g8 D6 l9 [9 I# F
    组件2:`matplotlib FigureCanvas for qtwidget`
    8 N$ b$ q" G$ x7 W$ @7 X7 Y组件3:`pyqtgraph`$ i/ K; U$ K) ^/ K& |* l
    在Pyside2中嵌入其他ui组件:增加组件到pages中,在develop分支中开发. S4 j, G7 ~, O2 |5 b
    以下组件部分测试测试参考:5 ?, u8 G8 k5 r. E9 h* z  G' T
    ; T# ?* v  K  Z5 A2 ?( g% \8 f% V6 N( K
    参考的B站视频$ o2 V, t1 }4 H+ s  W" p
    qtconsole 官方文档:The Qt Console for Jupyter, F9 h3 O& Q+ @" C  V
    组件1:jupyter qtconsole
    $ P0 l( j, t' v8 o8 ~0 M8 x# j1、安装 qtconsole 库, 经测试发现,该库目前不支持 pyside6, 所以更改解释器环境到 pyqt5 or pyside2
    5 I6 q) N+ C+ J1 H2 Q4 p    pip install qtconsole -i  https://pypi.tuna.tsinghua.edu.cn/simple
    / }" l$ C0 A: z* J* B3 o4 \15 I8 p: T& _% d" q
    2、尝试启动4 ?: a3 u4 Z; S  u1 w
       jupyter qtconsole8 j4 ^+ x7 w# V1 i0 E0 L& [' F3 Q
    1
      u, n, ^7 c- y, O. L0 j
    * A8 O& f: t) |/ K+ u' X% M2 l
    6 m0 G) `3 C- N3、尝试嵌入组件到pyside2 ui中4 B" b) g( H; ~4 S, _4 K. o

    ; o9 n+ j! O) i  I. f3.1、复制参考的py代码 consolewidget.py 到 gui.widgets 文件目录下* l/ u2 X6 C; W2 P
    7 o0 U1 Q" m# \1 C5 l
    3.2、在Qt Designer 使用 Widget(基类/父类) promote to ConsoleWidget,并修改对象名称,操作如下图:
    5 |7 W$ J% A$ c3 J! l: F( O& e, `* f. N* e7 }8 M; F! R9 |

    3 ]8 L; L# B  ~2 [3.3、ui显示样式修改1: widget 样式表  o5 T1 n- ^5 Z: t& |0 w

      U2 Y+ z3 K) N6 y! m3 J& [1 s/*设置父类窗体,背景边框等属性*/
    1 c0 z0 a, y5 e, R2 t, eQWidget {. r( o; R+ k3 R
            background-color: rgb(33, 35, 45);
    & A8 v' r) F' e; F+ t        padding: 8px;4 o/ F+ D" C9 e' r8 ?% B
            border: 2px solid #c3ccdf;
    - Z/ F+ w0 `$ p% B        color: rgb(255, 255, 255);" i) Q; Q1 b6 o' M4 t9 W/ x
            border-radius: 10px;
    9 i: j1 S3 g& \2 S}# |4 c9 @! ?1 l7 x
    1
    2 x4 i5 F7 ]& u& j  y2
    4 l7 b8 _; s' Y" a" S9 U& E) [+ P& ?3
    , m( k1 u, d( [, B4
    : p. i" _& ^; h5( I- b2 K4 f* m, I* c# H
    6  P' C5 G' i# k& n
    7
    9 S2 p. r. ^1 D4 ^1 T8" m+ |& U+ o. x  d/ |  N! \5 W" z
    3.4、ui显示样式修改2:qtconsole启动界面风格指定
    : z" m0 B5 v$ z, i6 {' b# N    self.set_default_style('linux')6 o; l+ k, E3 z5 a
    1
    & |# F; g5 ~2 z# {3.5、该窗口的实例化在uic自动生成的代码中9 L$ D1 I3 ]& B$ `- }
        self.ConsoleWidget = ConsoleWidget(self.frame_2)
    4 Y2 G" z, H; K    self.ConsoleWidget.setObjectName(u"ConsoleWidget"); }3 J1 y& g) W+ V) c, g
    1
    ( Q+ x1 ?- D+ P! M2 T' c2: K2 [7 I4 k" g
    3.6、运行效果
    9 ]0 `) c$ j1 v3 U* a+ r# P) W9 L
    组件2:matplotlib FigureCanvas for qtwidget
    6 o' V2 o1 w: ^& }0 v; _5 e1、安装相关库, 指定清华源: W" l! u9 A- r2 r4 L. g
        pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple" a9 B- o7 |( w; e+ R3 ?- ~
        pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
    9 s& M3 \. H, |7 t    pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple: k) a+ p) F+ z% f# L6 b& @
    1. l/ W% o6 D: C8 F0 X
    2
    2 H% @/ I* l6 X% e4 S& h% @9 }32 M$ ^8 N) \/ B7 j# K
    youtube 参考视频! b5 M6 q( r' t3 o2 g# ?
    网站教程" C5 ~# S! B0 q9 S; F& \; t
    youtube 参考视频: 不同主题风格调整方法,导入csv数据显示
    8 H; y' T) K1 Y2 L2、 复制 MplWidget.py 文件到 gui/widget 目录下
    ; T: f( Z. L% {" P3、测试 animation, Plotting Live Data in Real-Time  e5 x( ?% t" O
    5 w# T/ m( z; j5 M' F
    测试方法:plot_live_data()4 i2 T  ^; p( I: ~' L
    个人理解,animation 应该就是定义了一个与UI同线程的定时器。/ @' E- I, U* D# W3 G! R+ h
    组件3:pyqtgraph- O2 g; G& T0 n: S
    参考视频1' e( ~9 A8 |! b& E% o
    参考视频2et’s Build an Audio Spectrum Analyzer in Python! (pt. 3) Switching to PyQtGraph
    0 `  `7 V5 ~2 k3 B
      V% f  O; n2 G- a; m5 T7 e2 M" F1、安装相关库, 指定清华源  m, d  f& c6 w( v: d% b/ H
        pip install pyqtgraph -i https://pypi.tuna.tsinghua.edu.cn/simple
    * }9 e6 B5 V5 b. e' d# O1
    0 }0 A; {8 V* E3 X2、在 gui\widgets 目录中增加 pyqtgraph_test.py文件
    ) k, d0 d1 K. ]$ F1 x* G! P* y增加 2个按钮(draw, clear) 和 1个pygtgraph窗口控件(PlotWidget) 布局8 F" f8 P' E$ n3 W; @. B
    定义刷新时间,帧率,每隔通道的数据记录最大长度等概念% Y2 m# v. j7 Q, O- b
    注意,每个点之间的采样时间实时性不是QTimer能保证的。+ ^7 \5 z  w; ~
    还需要想清楚如何保证准确的采样时间,以及与数据刷新时间间隔之间的关系。(参考已有的scope的习惯)' T* X9 O$ x; R/ q+ {- O
    使用 QTimer 定时器, 实现动态刷新的功能, 60FPS -> 定时器时间间隔设定为 1000/60ms
    9 [4 p) c) w# h  {) F( W调用 self.graphicsView.plot(self.y_vals) 绘图,但注意,重复调用相当于创建多个通道的曲线。如果只想显示一个通道的曲线,有2种方式
    ( q9 m. m' r+ m# o1 b- j- D方式1:在 plot() 方法前,调用 clear() 方法* O1 X: m) F* d8 m: E
    方式2:使用 self.graphicsView.plot.setData() 方法刷新数据,对应的数据清除方法也改一下,改成setData([])
    ' f) b  Y5 G: d3、参考 Audio Spectrum Analyzer 代码,优化多通道显示刷新方式
    # u5 [, B) @: h# |源工程运行前,需要安装的库,pyaudio使用pip安装会失败,使用管理员模式启用conda终端安装8 r' i; V- \; T: o& c  G3 m( C
       pip install opensimplex -i https://pypi.tuna.tsinghua.edu.cn/simple, p  [# i1 m4 F' R! }& H- _8 t
       conda install pyaudio -i https://pypi.tuna.tsinghua.edu.cn/simple/ k4 c, A0 `' S9 Q8 \! [! C. Y
    1
    7 R' Z- K9 `1 B. i* H# h1 a- ^2
    # y8 C; j* m( ?# G8 z参考 self.traces = {}、set_plotdata() 数据结构和方法,优化多通道显示逻辑6 Y4 h9 y4 C7 v' D4 w$ J# I/ T
    " B: U4 c8 f9 C/ m7 n* F" T  e
    右键RUN pyqtgraph_test.py,效果如下:
    & y/ _2 I0 N5 U* M
    8 B6 E0 N% S1 h& ~3 Y" o+ x
    / G4 _# s6 B, {! {4 t文章知识点与官方知识档案匹配,可进一步学习相关知识6 w' t+ z" l4 \- ^6 a
    ————————————————
    ) V! ?& y$ ]/ ?8 C# H. P版权声明:本文为CSDN博主「HUIJIANG123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    $ o% X3 _& a; V+ x原文链接:https://blog.csdn.net/u012928587/article/details/124547230
    ) d2 q5 b3 {' p; k% y, t" K8 G# l4 s: D

    6 `; P) O* y5 M! R# w1 t! o
    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-10-18 03:12 , Processed in 1.681977 second(s), 51 queries .

    回顶部