QQ登录

只需要一步,快速开始

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

    0 ]) ?( k. j/ `* l! PPython UI设计学习笔记,在学习的UI框架中嵌入其他ui组件:增加组件到主画面的pages中" t6 [) ]) k* o. Y3 S% w8 A

    0 _1 E5 _: y7 C5 H: e$ {$ O$ p' Q8 C. j# A
    文章目录3 A6 G, P9 c. r9 G0 v  ^% ~
    在Pyside2中嵌入其他ui组件:增加组件到`pages`中,在`develop`分支中开发; o, Q2 |5 @# S3 Z; r7 f
    组件1:`jupyter qtconsole`
    5 d2 x" v" \: r4 O组件2:`matplotlib FigureCanvas for qtwidget`# X7 u; ~% M7 J) u; f" s7 ~4 w2 Y
    组件3:`pyqtgraph`8 {7 P5 q  p- K9 B! V
    在Pyside2中嵌入其他ui组件:增加组件到pages中,在develop分支中开发& V. {  t  ^1 \% @; [
    以下组件部分测试测试参考:9 D9 t# {! Z; C2 {: }

    4 R0 B0 v. c) N7 F' }参考的B站视频
    3 Z* N! |: W% \" y: Pqtconsole 官方文档:The Qt Console for Jupyter
    & d9 p' S4 n" K3 J' i. ^4 u2 h组件1:jupyter qtconsole; K$ R4 _% x3 ?) P, p
    1、安装 qtconsole 库, 经测试发现,该库目前不支持 pyside6, 所以更改解释器环境到 pyqt5 or pyside2
    + `# A- r& Q6 t0 g    pip install qtconsole -i  https://pypi.tuna.tsinghua.edu.cn/simple
    . M$ h) Y7 y; d2 V1. O2 ^( l8 w4 q! ?8 h; i7 t. {
    2、尝试启动
    , P+ h% S5 U1 n   jupyter qtconsole
    # [7 x9 \. n, H1+ S$ t8 G& a" q, q" a

    4 k) r3 O7 ]/ s1 h. E) Y% R
      V3 A8 @2 V9 {3、尝试嵌入组件到pyside2 ui中
    * m# @' Z: ?5 e( @, U5 ~- z0 j2 b! d0 l1 w& e
    3.1、复制参考的py代码 consolewidget.py 到 gui.widgets 文件目录下- k0 p% E5 Y# I/ z: P  h

    % e* \& t8 J8 S4 \: S# r0 {3.2、在Qt Designer 使用 Widget(基类/父类) promote to ConsoleWidget,并修改对象名称,操作如下图:
    " A* I7 B% v' S
    ) r: c) k, D' M% x1 N7 q
    " n8 C# N8 i* y! ~1 l" g3.3、ui显示样式修改1: widget 样式表
    2 N" c- i4 S# b! i, I6 X& Y& a3 c8 E1 c
    /*设置父类窗体,背景边框等属性*/
    # x( @" @# v. A, L; }$ ZQWidget {$ A. ]% m0 W4 K) r8 U# i
            background-color: rgb(33, 35, 45);# Q3 b6 n2 \9 r
            padding: 8px;
    ' w5 s4 V: c$ L        border: 2px solid #c3ccdf;
    6 c# E6 c6 N( p8 q4 K6 |- Z7 U        color: rgb(255, 255, 255);
    , l6 z% I/ s) c) P, f5 t; w        border-radius: 10px;
    2 s$ V: h2 @6 Z4 @4 |) a}) N/ N8 y% r8 |3 }- z- F
    1
    5 ?; m0 O" L6 F- z2
    : O0 z% {4 v, }& W' L. I3
    & V: K! x  @  W9 N% _; h1 U- K4$ d$ m# X/ [( B' N2 ~& @
    5
    7 k: ?: j$ e: M; H4 j& a- g2 C67 ^" U6 {5 [, n) `
    71 l# X5 u! b1 J
    8# z0 ~  t/ q3 B( A/ t' K; H
    3.4、ui显示样式修改2:qtconsole启动界面风格指定
    / m- E8 Q! Y. Q, Y+ ~4 B% w    self.set_default_style('linux')" l+ J& D# e3 x
    1
    ! I( l+ B2 l& {% z$ e+ B3.5、该窗口的实例化在uic自动生成的代码中. w. A* j+ h; |, k; M6 `# P3 n
        self.ConsoleWidget = ConsoleWidget(self.frame_2)
    / X% ]. w, s6 q+ i    self.ConsoleWidget.setObjectName(u"ConsoleWidget")1 K% @: Q6 O8 M5 e/ X# P/ {
    1
    5 ^! I- s4 d. ^( G  S+ J- P2
    : }. Y& Z  U  s3.6、运行效果
    / U( V! q1 ^/ g8 G! w" N1 A- P+ A! E2 O$ Y! {
    组件2:matplotlib FigureCanvas for qtwidget- Y! r" L* Q- V+ ?/ f, b
    1、安装相关库, 指定清华源* {' D& m4 r) i
        pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
    ( }3 V2 {' e! B    pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
    # H0 R& C' |' G, B% `    pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple; h0 N9 C1 _* T2 P' s
    1
    0 L' T% t  |% k7 y( S7 r3 P2 l2
    3 @) [$ e- F+ d  ?2 u6 h31 I7 a* D& b6 a: ]& R
    youtube 参考视频
    , e0 H! N, d$ k& x网站教程
    ( o" F& b4 [6 l& @* qyoutube 参考视频: 不同主题风格调整方法,导入csv数据显示) W4 I# A! F1 ^$ @
    2、 复制 MplWidget.py 文件到 gui/widget 目录下; P* ~  D" d4 z6 h9 _0 h6 P
    3、测试 animation, Plotting Live Data in Real-Time
    3 X( t5 O7 V6 r# R. \3 }9 T& t- S+ C& i5 \
    测试方法:plot_live_data()
    + R5 H2 g; ?0 R0 X' w; F# n; a个人理解,animation 应该就是定义了一个与UI同线程的定时器。0 f: P# ^$ u' X0 k# \9 K7 ?5 I
    组件3:pyqtgraph, b" D0 A6 k5 `1 m9 }
    参考视频1
    5 c5 M8 D- D' [5 T& k+ w' C2 G参考视频2et’s Build an Audio Spectrum Analyzer in Python! (pt. 3) Switching to PyQtGraph$ H4 T6 C% ~  ^( j- X6 }

    - Y% J: M% l( u6 ?: y1、安装相关库, 指定清华源
    : D0 q7 `9 R) T$ R2 X    pip install pyqtgraph -i https://pypi.tuna.tsinghua.edu.cn/simple
    8 ?' U9 v* ?: t1. f6 k' l% P" S1 E7 Y
    2、在 gui\widgets 目录中增加 pyqtgraph_test.py文件. G- J" ~1 Q$ b! i# m+ L
    增加 2个按钮(draw, clear) 和 1个pygtgraph窗口控件(PlotWidget) 布局
    " f; a: J$ a$ G& P3 ~8 b9 h4 a4 b  z定义刷新时间,帧率,每隔通道的数据记录最大长度等概念6 X) c3 ]# }) ^
    注意,每个点之间的采样时间实时性不是QTimer能保证的。
    $ B# d# i- F0 B还需要想清楚如何保证准确的采样时间,以及与数据刷新时间间隔之间的关系。(参考已有的scope的习惯)* l. k/ \% k6 @' c2 Q3 s
    使用 QTimer 定时器, 实现动态刷新的功能, 60FPS -> 定时器时间间隔设定为 1000/60ms  _: x: a- V- }0 k% C
    调用 self.graphicsView.plot(self.y_vals) 绘图,但注意,重复调用相当于创建多个通道的曲线。如果只想显示一个通道的曲线,有2种方式1 I& u8 B- w& X8 ]. Z
    方式1:在 plot() 方法前,调用 clear() 方法
    . C& ~, d8 `' t" z8 w( _! b6 K- |方式2:使用 self.graphicsView.plot.setData() 方法刷新数据,对应的数据清除方法也改一下,改成setData([])% m* ^: S' M" H6 c* I4 U
    3、参考 Audio Spectrum Analyzer 代码,优化多通道显示刷新方式3 l9 b+ o6 T  j; v# H
    源工程运行前,需要安装的库,pyaudio使用pip安装会失败,使用管理员模式启用conda终端安装& e) b# c. i7 H* f4 |0 o0 b. I- R
       pip install opensimplex -i https://pypi.tuna.tsinghua.edu.cn/simple4 k; L  }+ ?( |
       conda install pyaudio -i https://pypi.tuna.tsinghua.edu.cn/simple% i/ E' {; N& B! a; ^
    1" s; s# c$ {3 h7 D+ ^( b
    2" H9 u; W1 j8 ]% t& m
    参考 self.traces = {}、set_plotdata() 数据结构和方法,优化多通道显示逻辑* N2 d. s1 y* ^& g# H
    % b$ V; O+ K% N$ r& h+ h; i- g
    右键RUN pyqtgraph_test.py,效果如下:
    ; j1 a2 ^3 Y6 H0 m# }. Z, i5 H2 \9 L5 j$ q& j! c
    # a7 x5 ?' ^2 w, z6 v! o. B
    文章知识点与官方知识档案匹配,可进一步学习相关知识
    3 \! v0 ]4 K* B' ~$ y————————————————7 T. w9 r: g  l  O0 t& {2 c- O0 A1 r* R
    版权声明:本文为CSDN博主「HUIJIANG123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。( d! ]* {( o0 p, o: D1 K
    原文链接:https://blog.csdn.net/u012928587/article/details/124547230# r/ H. ~/ S& N! t. S: d

    - c- A5 @; ~2 F, b. M: \% ?* T* _0 j4 l4 U) 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-7-10 09:26 , Processed in 0.470591 second(s), 51 queries .

    回顶部