- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 563258 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174200
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
* K$ W: ?, V4 }9 w2 n- E5 s
Python UI设计学习笔记,在学习的UI框架中嵌入其他ui组件:增加组件到主画面的pages中
" J. |" }5 T/ \- @2 a
9 j' Y6 l) ]2 N! }* N
6 M! i3 s, ~ a: K文章目录, J3 L3 x2 A3 C2 k
在Pyside2中嵌入其他ui组件:增加组件到`pages`中,在`develop`分支中开发
* R- U% B- U8 E2 w8 S0 h" n组件1:`jupyter qtconsole`
9 K% y7 G2 _! E5 H组件2:`matplotlib FigureCanvas for qtwidget`& y6 \* }5 ]6 F7 q6 z) ]( b2 |
组件3:`pyqtgraph`
8 e p2 d+ |6 g) K在Pyside2中嵌入其他ui组件:增加组件到pages中,在develop分支中开发0 {" V3 G/ ~/ q. R' _* T( Y
以下组件部分测试测试参考:3 B( l# h. [$ p+ {* A+ P9 r
! Q% u( _; K5 c* @; x+ j4 A3 `( `参考的B站视频" M2 e4 f& F) @8 i
qtconsole 官方文档:The Qt Console for Jupyter6 b, H5 P0 Q+ M
组件1:jupyter qtconsole$ w6 F2 p9 a2 z' e
1、安装 qtconsole 库, 经测试发现,该库目前不支持 pyside6, 所以更改解释器环境到 pyqt5 or pyside29 L8 R6 |+ |" T4 C0 q
pip install qtconsole -i https://pypi.tuna.tsinghua.edu.cn/simple* _; H/ J2 y) [; F" D
1% w7 h' O* y! _ |: x
2、尝试启动2 M b3 |; T4 }% z, j6 u0 X7 K: A# b
jupyter qtconsole
8 Z4 k, R+ ^% c2 y$ f- m15 V# o) z& p+ S
3 D$ H' d" i8 g1 s1 n: w
4 x# F' b! [1 E8 g) T3、尝试嵌入组件到pyside2 ui中
. J: E! E: S3 R# M. C5 B- C
S1 s+ |6 o8 q( ^* n* \7 g3.1、复制参考的py代码 consolewidget.py 到 gui.widgets 文件目录下
; [" S: x" c) f2 I. z, r
5 o8 x7 Y( B& L' ]3.2、在Qt Designer 使用 Widget(基类/父类) promote to ConsoleWidget,并修改对象名称,操作如下图:( Q: A+ j! m0 E( q8 W% l
! _9 Y& U% m/ Y
" x g, S# @ Z: {9 G3 A1 l. j- D# h3.3、ui显示样式修改1: widget 样式表
, T% \( Q9 B* n# y
p$ u. R0 v m/*设置父类窗体,背景边框等属性*/" u8 ]% g# v* E8 Q
QWidget {. t c& W K* I) n
background-color: rgb(33, 35, 45);
% w& Y7 e% M0 i- ]1 E9 o5 _ padding: 8px;
4 j& K; Z/ |# ?3 g/ d border: 2px solid #c3ccdf;
4 t6 [* ^5 _6 _' @$ G color: rgb(255, 255, 255);6 a3 F" w* e" w6 U( g
border-radius: 10px;
8 x$ K2 b I& c}
|( B- w+ e' X7 U/ w G1
2 j7 e) a- H' b( @2
0 {, P" X" o2 T6 [, [3
9 l7 B& h- d- |# Y; T& k* a46 ~+ U' H K/ g9 z& Q' Y9 j3 [/ [
56 j( L" N9 j# f6 X) e/ s8 Z
67 ]% [. f1 p: M& I* O$ _3 K* X
7
+ k" P: ^6 [ L* j" g8) f( W" W5 i( T- C3 q/ p, `0 t
3.4、ui显示样式修改2:qtconsole启动界面风格指定, Y5 Y; ~0 @) D# Q
self.set_default_style('linux'); `% R/ w8 Q) `( f' }* @
17 Z. c5 c `/ y# @
3.5、该窗口的实例化在uic自动生成的代码中# a- z) W2 _) s" {) I7 G! L; F
self.ConsoleWidget = ConsoleWidget(self.frame_2)9 [: R/ p. n0 w+ x l- G5 ?
self.ConsoleWidget.setObjectName(u"ConsoleWidget")9 J3 J' |* w7 b+ Y3 f
1: M! ^# V5 t5 S9 i9 X/ S
2
* B# Z1 b! Y6 y5 E- X; m& p3 q3.6、运行效果
, x% {* e" {* V# @6 B: s
( O- |" e% d5 A% Y! G组件2:matplotlib FigureCanvas for qtwidget
$ x: p' h y" ~% ]1、安装相关库, 指定清华源$ b% h9 H+ }# B; H: |
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
4 e4 v& Y# v, ]& h# p& D7 V. q pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple! Y/ ]# l/ q l M0 |+ q/ q
pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
$ D- S) q2 j n L1 v% E6 B1. X' u& X4 x6 ?7 \
2
% N Q M0 `% K$ K3; Q5 U c# {4 y$ w" ?) D2 q1 O
youtube 参考视频, q: j" L& d4 c7 z3 V
网站教程3 {( b1 F% D0 @! t) u) w
youtube 参考视频: 不同主题风格调整方法,导入csv数据显示
2 }! I8 _5 g/ _6 z2、 复制 MplWidget.py 文件到 gui/widget 目录下
5 ~, W; m- P2 Q0 e5 o9 r: p8 M3、测试 animation, Plotting Live Data in Real-Time% X2 G; ?' W0 ~: I& I: \: b2 D
% J; \0 i" G3 E; j测试方法:plot_live_data()
- o q+ j5 Q0 n( E& ]个人理解,animation 应该就是定义了一个与UI同线程的定时器。& F3 Y) D5 p- u( N2 W: [8 x
组件3:pyqtgraph
7 K, p) X+ e9 a" G- X参考视频10 v! m, z, y1 R/ R& y8 F" l0 f
参考视频2 et’s Build an Audio Spectrum Analyzer in Python! (pt. 3) Switching to PyQtGraph5 L' H' _" C+ [. v$ ?0 |
8 k& f0 _+ k- N; J- C) e
1、安装相关库, 指定清华源% ?/ y- {: y0 h# V" l
pip install pyqtgraph -i https://pypi.tuna.tsinghua.edu.cn/simple
: F2 D+ _# P0 h" v1
$ H6 D, e& `! C2、在 gui\widgets 目录中增加 pyqtgraph_test.py文件( o; |9 e; V# f$ I
增加 2个按钮(draw, clear) 和 1个pygtgraph窗口控件(PlotWidget) 布局8 r6 I) e) X0 v
定义刷新时间,帧率,每隔通道的数据记录最大长度等概念( u e8 G5 F% c3 H) Z
注意,每个点之间的采样时间实时性不是QTimer能保证的。
: ]% G* ]4 _- W6 L" e% G& n还需要想清楚如何保证准确的采样时间,以及与数据刷新时间间隔之间的关系。(参考已有的scope的习惯)
; K( e) |& H/ W3 P5 }! n6 Z, m* U使用 QTimer 定时器, 实现动态刷新的功能, 60FPS -> 定时器时间间隔设定为 1000/60ms Q6 ]" c/ _7 L( c7 J5 ]+ G; i
调用 self.graphicsView.plot(self.y_vals) 绘图,但注意,重复调用相当于创建多个通道的曲线。如果只想显示一个通道的曲线,有2种方式
) V1 j ^) {8 N* s方式1:在 plot() 方法前,调用 clear() 方法5 I8 ~* ^# v& e0 {+ Y8 q- c) ~
方式2:使用 self.graphicsView.plot.setData() 方法刷新数据,对应的数据清除方法也改一下,改成setData([])8 U, L. K; L0 j8 y; ~& q
3、参考 Audio Spectrum Analyzer 代码,优化多通道显示刷新方式$ I2 f! [9 G, P- ]7 P5 E
源工程运行前,需要安装的库,pyaudio使用pip安装会失败,使用管理员模式启用conda终端安装9 z! C8 v: i: S( ^! b2 `
pip install opensimplex -i https://pypi.tuna.tsinghua.edu.cn/simple
$ X$ F# E; Q1 V+ n6 S# G0 |0 B, Q) D conda install pyaudio -i https://pypi.tuna.tsinghua.edu.cn/simple9 g6 s, e% r- O6 Z1 s7 T
1
* ?+ l- ]1 h0 `9 \; q2! s! S! c7 N8 o
参考 self.traces = {}、set_plotdata() 数据结构和方法,优化多通道显示逻辑( w4 h/ b' c W! |
% M" O9 q, Y* `) M, k0 L2 x: m
右键RUN pyqtgraph_test.py,效果如下:8 w. q2 p& u; x- Q" j
, s7 a8 V* L; M
# p1 E* v6 N5 ?& z$ Q Z L
文章知识点与官方知识档案匹配,可进一步学习相关知识- G9 |# T0 q2 U: T
————————————————
6 y4 b2 ^2 D- M8 k3 X1 i1 i) ]版权声明:本文为CSDN博主「HUIJIANG123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。" S! K( x) x" K' d
原文链接:https://blog.csdn.net/u012928587/article/details/1245472300 w( |# j3 Z7 L3 m0 z. m( H) Z
- {1 O5 v8 f; E+ @$ V/ ^0 ]
5 E4 g. f: V1 C( {! U0 } |
zan
|