- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 563315 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174217
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
0 h) k* x/ c% c8 E
Python UI设计学习笔记,在学习的UI框架中嵌入其他ui组件:增加组件到主画面的pages中7 K2 ]3 R% o; J0 @% z
: B. {$ ^* Q9 P, `( L0 ~" g3 v, z4 \- v5 w- M# C' V) |
文章目录
" ?( z* x+ Q/ @在Pyside2中嵌入其他ui组件:增加组件到`pages`中,在`develop`分支中开发
2 q, C3 H5 s0 N8 _: X& @组件1:`jupyter qtconsole`
& t/ ^- f, E0 h7 e组件2:`matplotlib FigureCanvas for qtwidget`
% t- \% |1 n( ?组件3:`pyqtgraph` b. ~' W! `7 a( E+ y; K4 t
在Pyside2中嵌入其他ui组件:增加组件到pages中,在develop分支中开发
$ h; o' E3 p+ H) P以下组件部分测试测试参考:
: L7 P7 a8 S2 _* x2 T: W
c- P( o! {7 G* d参考的B站视频
% A0 Z% f- K* U( ^' }& p" J/ B/ [qtconsole 官方文档:The Qt Console for Jupyter
7 C3 g: B1 U6 T; u, ]组件1:jupyter qtconsole
/ M. W7 v% R$ e) Z1 e) M, F1、安装 qtconsole 库, 经测试发现,该库目前不支持 pyside6, 所以更改解释器环境到 pyqt5 or pyside2
% _; x& \/ D2 }9 v& Q pip install qtconsole -i https://pypi.tuna.tsinghua.edu.cn/simple
4 C1 v/ c0 d/ r0 |10 y6 i8 X% `# Z1 g: T
2、尝试启动
- ]* B h2 X/ e2 k) l V jupyter qtconsole8 \. ^9 _; {6 F; C" O! Y
1# B( Y" R* o; @ j, @. Y u
. |+ V; l* r2 C8 Z6 R4 x# d: a# @2 M
3、尝试嵌入组件到pyside2 ui中
+ @6 A1 y) O9 N/ w9 ]; c) a$ V
; N0 }+ ?8 A; R& O- T! X" p. g8 y3.1、复制参考的py代码 consolewidget.py 到 gui.widgets 文件目录下
8 R4 W: X$ N8 Y" `3 {" Z) A
& @1 x! v5 Q( m* o0 Y3.2、在Qt Designer 使用 Widget(基类/父类) promote to ConsoleWidget,并修改对象名称,操作如下图:
- W L7 R, ~; N4 f
! i# g9 v: Z/ k/ Y) L4 x
/ _ }4 Y' Y( v8 x8 d3.3、ui显示样式修改1: widget 样式表
7 z: g8 A# [: v. H7 b1 A5 T) L9 `1 |. f$ P
/*设置父类窗体,背景边框等属性*/# g6 B. n" Z: F, B# n; ?9 R
QWidget {% {+ \& M; c: G9 j9 `. N
background-color: rgb(33, 35, 45);' F2 J1 V' T4 N9 ]: w7 E1 @$ \
padding: 8px;
( _2 X7 ]7 Y& i9 C7 E- T* l) g. r# U border: 2px solid #c3ccdf;: E n$ }% s4 {5 x2 I+ e
color: rgb(255, 255, 255);
3 y. s! l$ G5 {9 Q8 @ border-radius: 10px;
; q8 ?/ S" {/ M. V- e2 i' E}
* I6 k% t9 R5 z* ?6 r15 p2 L) ^5 Z. `$ B- t
2
4 R c! M: ]+ Y3 R3+ d. Y) f N. q9 T; J
4
8 h' n# F% \, {( M' f! K5
5 F' r3 {+ k+ m6
, j- [- d4 G/ B2 c; w6 M: f7+ N" X8 @+ E! I5 l; w, N0 P1 b
8$ u) n% F. s S6 H }- J& ?
3.4、ui显示样式修改2:qtconsole启动界面风格指定0 K. |' `( K1 J) o) B
self.set_default_style('linux')
! q D: J! k2 ]5 e2 h# y% b K5 e1; t T9 a2 u$ O+ \5 F. t5 Z0 P/ ?7 T
3.5、该窗口的实例化在uic自动生成的代码中0 r# ?$ D' I8 `( u- [* w8 V
self.ConsoleWidget = ConsoleWidget(self.frame_2)
# V' Q8 H, D+ F self.ConsoleWidget.setObjectName(u"ConsoleWidget")0 v& x5 G0 i9 H* F% ] L
1
l- F( V$ H. g0 ^& Q3 J4 \2
' I: \" m9 _5 |1 I3 u1 r3.6、运行效果# _. }) o& Q5 C- q2 I+ x. J* u( n
0 f( U: N3 o- ]" H+ [1 ^组件2:matplotlib FigureCanvas for qtwidget( q- ?6 h$ ^) J5 K5 e: f. @
1、安装相关库, 指定清华源
7 j- W6 g! y( w" x! ^$ {$ i2 X# C7 { pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
9 i2 ^( ^( |7 b% M pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
0 ^2 H( B- u/ O4 p pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple7 r; V& n/ L+ |, T/ t4 Y
12 ~# h/ {6 | U
2% k# f9 |& c, x
3
# \- h$ z3 r# h h4 W7 t" dyoutube 参考视频3 N+ o+ g; u7 @0 p) r0 z+ O) S# P
网站教程
/ k( k u: x( w: b( l8 P, ?4 T# q# `youtube 参考视频: 不同主题风格调整方法,导入csv数据显示
3 H5 S* B% o6 S4 d3 T" D$ C2、 复制 MplWidget.py 文件到 gui/widget 目录下
8 ?3 {& A, b$ O7 X3 \* K Q3、测试 animation, Plotting Live Data in Real-Time
7 H J/ n6 C. J. P E( O4 R9 u! _7 w" P
测试方法:plot_live_data()
& \1 t# t) R8 o# }: i6 L' T个人理解,animation 应该就是定义了一个与UI同线程的定时器。% ?$ I X, b) s) b# B
组件3:pyqtgraph' {* c6 p! f3 a2 L. H
参考视频1
& _4 b; q6 h- t3 u: w参考视频2 et’s Build an Audio Spectrum Analyzer in Python! (pt. 3) Switching to PyQtGraph# ~) T) ]; }+ Z, `
: }+ H# \/ c) r1 s8 r1、安装相关库, 指定清华源- e4 [1 A4 R. ]2 x$ O7 f7 t
pip install pyqtgraph -i https://pypi.tuna.tsinghua.edu.cn/simple0 K9 I* Q, L% D
1
; e1 U8 q% b9 e2、在 gui\widgets 目录中增加 pyqtgraph_test.py文件2 Z' g! s& b# g) @2 `* q+ @4 d
增加 2个按钮(draw, clear) 和 1个pygtgraph窗口控件(PlotWidget) 布局# @8 k& n( B1 D" C
定义刷新时间,帧率,每隔通道的数据记录最大长度等概念
( X. s7 q* d# V Z注意,每个点之间的采样时间实时性不是QTimer能保证的。) H/ q* x. a+ d
还需要想清楚如何保证准确的采样时间,以及与数据刷新时间间隔之间的关系。(参考已有的scope的习惯)
Z4 e( Y! E9 S' N9 a使用 QTimer 定时器, 实现动态刷新的功能, 60FPS -> 定时器时间间隔设定为 1000/60ms: G7 @. H i U
调用 self.graphicsView.plot(self.y_vals) 绘图,但注意,重复调用相当于创建多个通道的曲线。如果只想显示一个通道的曲线,有2种方式
+ n0 d# o$ u: p9 A- S方式1:在 plot() 方法前,调用 clear() 方法
7 X4 Y7 l& f* O# |+ o. j方式2:使用 self.graphicsView.plot.setData() 方法刷新数据,对应的数据清除方法也改一下,改成setData([])' W# t1 A* o6 a
3、参考 Audio Spectrum Analyzer 代码,优化多通道显示刷新方式0 n: W8 i5 @! ^& |1 @; { ~, X) l
源工程运行前,需要安装的库,pyaudio使用pip安装会失败,使用管理员模式启用conda终端安装; D- U t: [5 r
pip install opensimplex -i https://pypi.tuna.tsinghua.edu.cn/simple
$ j" @% c% T% y2 P$ j& s8 B conda install pyaudio -i https://pypi.tuna.tsinghua.edu.cn/simple
4 ]5 `+ |& @$ v: I% x& Q: }1 }4 G1
6 r8 P$ n" ?& |2. V- y5 V5 V) ?$ k% u1 t- x
参考 self.traces = {}、set_plotdata() 数据结构和方法,优化多通道显示逻辑
2 b+ I5 v0 {& i: q; D l6 n& h9 f8 m2 x- M- V; a p1 o/ s8 S
右键RUN pyqtgraph_test.py,效果如下:
5 m0 L' v/ h' X. p5 k2 T# M( d5 c3 s1 z5 V/ @
3 x4 _; c# e, ?8 O. e- L; Q' A
文章知识点与官方知识档案匹配,可进一步学习相关知识. W4 H. w# o1 Y0 p, y. u) o
————————————————' ~+ H# T4 V; l0 x6 F- V
版权声明:本文为CSDN博主「HUIJIANG123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。+ X- |: F1 O) C6 G' B
原文链接:https://blog.csdn.net/u012928587/article/details/1245472306 Z4 V( O1 E. \1 _% U' {7 K! v$ h
% i5 _6 k4 r" ?$ N) ?: N. X
* V$ M0 _- W# E0 Y6 D
|
zan
|