QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2336|回复: 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 J! \3 H1 ^: f9 t- P( ~Python UI设计学习笔记,在学习的UI框架中嵌入其他ui组件:增加组件到主画面的pages中. l8 Z1 s& X3 u$ l2 y! B

    $ N0 g2 k3 z( z- u
    & W3 E3 `. \& o2 R' y' S文章目录0 O0 @" d6 o0 |; W
    在Pyside2中嵌入其他ui组件:增加组件到`pages`中,在`develop`分支中开发2 y! r; H. P1 u( V3 ^
    组件1:`jupyter qtconsole`
    ; |; q: x1 v) f- G组件2:`matplotlib FigureCanvas for qtwidget`1 D1 z' `7 ~7 |2 ?& q, a0 B4 l
    组件3:`pyqtgraph`
    7 S1 d' e# x3 ?& ~  a# C2 W9 K/ _在Pyside2中嵌入其他ui组件:增加组件到pages中,在develop分支中开发) _1 j2 Z$ i9 U# i5 Q0 r7 c: P7 C
    以下组件部分测试测试参考:
    * B1 f" h, d+ `8 q0 f' Q% t4 n7 F6 D* t9 f$ }+ i* j) L! q
    参考的B站视频* l. r8 z- x& Z7 H- y
    qtconsole 官方文档:The Qt Console for Jupyter
    & _% H" D8 k* w5 Q5 o* s组件1:jupyter qtconsole  K9 v4 c1 C) H2 h
    1、安装 qtconsole 库, 经测试发现,该库目前不支持 pyside6, 所以更改解释器环境到 pyqt5 or pyside2
    1 C. T4 W1 U( `" C2 a    pip install qtconsole -i  https://pypi.tuna.tsinghua.edu.cn/simple- a$ Q$ |) @  y
    18 j4 A& M: G4 a( W- [
    2、尝试启动
    8 F' z& F2 U6 {4 Z; @% c   jupyter qtconsole( z. H. P0 G  w
    1
    : u5 H# B# R/ y7 @
    " ~  D8 g, D; U  H+ u6 k/ ~
    . s& Y: u+ L. R! h# X. [3、尝试嵌入组件到pyside2 ui中
    , T, k0 }) g0 Q8 @: q5 S
    ( S( \# `8 _3 l3 c3.1、复制参考的py代码 consolewidget.py 到 gui.widgets 文件目录下
    ( T( C3 o( P0 w' k& W7 g3 g
    : o/ ?& o7 m( N# W% c8 v3.2、在Qt Designer 使用 Widget(基类/父类) promote to ConsoleWidget,并修改对象名称,操作如下图:7 x6 D- g" v6 h* K4 e
    9 o; t/ N9 n, N& ], M! t

    0 b. ?- D& J) }( V4 A7 I5 ~* r3.3、ui显示样式修改1: widget 样式表+ Q/ O! W4 Z/ f+ f" Z
    8 y4 w9 [0 P, P0 y6 G+ V4 [2 }
    /*设置父类窗体,背景边框等属性*/$ |4 g# @# k; g) p
    QWidget {: U/ }& G/ X5 x+ Z6 e5 U3 g" h
            background-color: rgb(33, 35, 45);
    ) Z$ x" O: O. O' S* c" O        padding: 8px;  J6 H; A  Y% _, i9 e4 E- N
            border: 2px solid #c3ccdf;# C$ F# R- P8 N- ~
            color: rgb(255, 255, 255);7 h1 F0 d, {' c5 v+ u7 A
            border-radius: 10px;
    2 @, H/ ?/ n8 K; V; q) D}% o+ J& R# m1 b. d
    1
    * A: |' F* g0 p% G% p* e2
    4 f) s* t, F( r$ G8 X! v6 `3
    - J; N- S& U- J' D6 q! r! e1 u- k4
    0 }0 z! E& X7 V3 T5
    9 V8 c0 [. E! Q) H6
    - ^/ S/ B0 R8 R2 e9 `0 j+ E7$ N% I) R! m, |3 @
    8
    7 j) s' k: S7 P1 V0 p3.4、ui显示样式修改2:qtconsole启动界面风格指定& ~% C9 ]2 y# y/ J, w
        self.set_default_style('linux')' I, e& x- S0 [3 Y4 g8 Z
    1. O  O$ Y; C. e3 H
    3.5、该窗口的实例化在uic自动生成的代码中  _$ c1 L' D2 N; Y3 M6 p1 t
        self.ConsoleWidget = ConsoleWidget(self.frame_2)
    & Z; y" h8 l& D& x2 S8 S3 s4 L    self.ConsoleWidget.setObjectName(u"ConsoleWidget")
    6 W6 X9 o8 b9 U1
    $ C! M8 T9 G5 [2/ O4 l  A" z& R% O3 A, z
    3.6、运行效果2 O" e) f9 m8 l, o
    2 N5 j8 L" x2 d, ]6 h0 T# m
    组件2:matplotlib FigureCanvas for qtwidget
    & x3 ^% V1 e2 @1、安装相关库, 指定清华源7 l7 C+ l4 Y/ b4 u
        pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple8 r" v& a) G2 s& B
        pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
    3 o# |, W" L9 ~: F* l% }9 L    pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
    ; @7 U; X/ `  u/ l7 S- C/ m+ r* k1
    . r6 }  [, L3 D- O2 ]% ~1 ]2
    8 D5 Q$ d8 W  Q- D1 D7 W% {3/ J' f: r: d. N  t8 Q0 g" W+ q
    youtube 参考视频/ b) L1 Q& }1 R0 @7 M2 M1 }
    网站教程, K  n; p- u- c8 Z$ J' B- n" {
    youtube 参考视频: 不同主题风格调整方法,导入csv数据显示# h. D9 \6 D; ~! n9 h
    2、 复制 MplWidget.py 文件到 gui/widget 目录下% b6 p# {( P' N! O) ]: O
    3、测试 animation, Plotting Live Data in Real-Time
    6 v/ O5 x$ Q5 d; C
    % i5 u: a9 e+ @  p4 H9 U! K测试方法:plot_live_data()
    8 U6 e: \) E% b4 s个人理解,animation 应该就是定义了一个与UI同线程的定时器。
    + J/ t2 L4 o/ S/ O3 m! U8 I" T. N9 J组件3:pyqtgraph
      p9 j: {% `: ~9 G* `+ ?, I参考视频1: f4 ?9 z/ f: x7 K4 h
    参考视频2et’s Build an Audio Spectrum Analyzer in Python! (pt. 3) Switching to PyQtGraph
    4 r( R' ^1 L* O, O" i7 S0 B3 H
    ! C, v0 p6 Z+ V1、安装相关库, 指定清华源
    , l1 Q- a7 `$ Y; ]7 ^( o: }% O    pip install pyqtgraph -i https://pypi.tuna.tsinghua.edu.cn/simple# _8 Z# l5 C% Y
    1; A$ [( [* a+ V6 c1 M5 ]# G
    2、在 gui\widgets 目录中增加 pyqtgraph_test.py文件; Z4 Q4 A, I8 s! g, t# _  f
    增加 2个按钮(draw, clear) 和 1个pygtgraph窗口控件(PlotWidget) 布局
    & T$ ]5 h1 @: R. S6 H定义刷新时间,帧率,每隔通道的数据记录最大长度等概念
    7 [3 [- v0 Y- O注意,每个点之间的采样时间实时性不是QTimer能保证的。0 g" o" M/ ?6 p3 }4 s6 q
    还需要想清楚如何保证准确的采样时间,以及与数据刷新时间间隔之间的关系。(参考已有的scope的习惯), ~( b# `- I+ ?4 o
    使用 QTimer 定时器, 实现动态刷新的功能, 60FPS -> 定时器时间间隔设定为 1000/60ms
    , l2 R6 a8 K& ?2 y9 R9 r! I  U调用 self.graphicsView.plot(self.y_vals) 绘图,但注意,重复调用相当于创建多个通道的曲线。如果只想显示一个通道的曲线,有2种方式
    # F/ r* z$ a. c9 o" i2 O  n" d方式1:在 plot() 方法前,调用 clear() 方法
    . ]1 d. \. f, z. h- Q& A5 C方式2:使用 self.graphicsView.plot.setData() 方法刷新数据,对应的数据清除方法也改一下,改成setData([])
    * r4 T: k; f3 U# ]. Q3 |; B( \. w3、参考 Audio Spectrum Analyzer 代码,优化多通道显示刷新方式
    : o9 |4 Q4 l8 T* K$ t源工程运行前,需要安装的库,pyaudio使用pip安装会失败,使用管理员模式启用conda终端安装
    ( u2 g% ^& s* u$ s2 c   pip install opensimplex -i https://pypi.tuna.tsinghua.edu.cn/simple
    ; ^& ]$ \5 V( u% S   conda install pyaudio -i https://pypi.tuna.tsinghua.edu.cn/simple
    2 B: s! r: w% x* n+ S# v1
    & J% D; ~1 }7 F9 z2
    ( ^# C  c2 q* d: t+ I参考 self.traces = {}、set_plotdata() 数据结构和方法,优化多通道显示逻辑. A! x+ o9 B) K4 ^$ w) V2 U# S

    6 M- O; A: k# o/ [5 f右键RUN pyqtgraph_test.py,效果如下:: G# ]  Q+ }1 S# y/ p; M% F

    ; D: j3 o' u2 [3 D; \, o  _
    - O2 V" Y% ?. c) T5 y! w; \文章知识点与官方知识档案匹配,可进一步学习相关知识
    1 f6 O6 K4 u. ]————————————————- w$ w1 k0 ]" Z  b$ K& v4 o
    版权声明:本文为CSDN博主「HUIJIANG123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。5 C) V5 U) I9 w2 q
    原文链接:https://blog.csdn.net/u012928587/article/details/124547230
    1 W1 z/ K$ z: s5 E. D4 d: ]) x/ k9 i" L5 z/ Q
    . I6 s: W# K, q: h* L' 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-7-10 05:07 , Processed in 0.464192 second(s), 51 queries .

    回顶部