- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 563420 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174249
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
8 x( h6 f- p' L; o& s# XPython UI设计学习笔记,在学习的UI框架中嵌入其他ui组件:增加组件到主画面的pages中7 g/ G9 ~) F% M% B u4 U
0 n* F! S- ^, s5 s. v o
& W0 o, n' H& D1 u0 n文章目录
8 h, E0 V1 \ _2 F/ Y在Pyside2中嵌入其他ui组件:增加组件到`pages`中,在`develop`分支中开发# h2 j* C& p% e
组件1:`jupyter qtconsole`$ P( r8 N6 y0 F; R4 u, M/ q
组件2:`matplotlib FigureCanvas for qtwidget`
+ O' R3 m4 Q6 f8 A. f组件3:`pyqtgraph`
R! Q0 z- D% x0 \在Pyside2中嵌入其他ui组件:增加组件到pages中,在develop分支中开发
1 D! X( `+ u+ Q8 o& ^以下组件部分测试测试参考:6 v0 ^) ]; K9 p1 B0 |& O
+ R8 U0 n, A/ e; H1 S参考的B站视频& O7 S6 ~& z, J' w- N9 x
qtconsole 官方文档:The Qt Console for Jupyter @5 t6 |/ B% A1 `& J
组件1:jupyter qtconsole
c3 D( h: }2 Y! ^1、安装 qtconsole 库, 经测试发现,该库目前不支持 pyside6, 所以更改解释器环境到 pyqt5 or pyside2- n# _1 t7 z9 Z
pip install qtconsole -i https://pypi.tuna.tsinghua.edu.cn/simple; M. ^& A: W5 u/ ^9 c, J5 t
1$ \3 _6 ]3 W$ i2 S
2、尝试启动
3 A0 Z4 r4 A8 F* s1 ? jupyter qtconsole2 A, p8 u% Z# I) p4 O
16 e4 u3 V x4 k% g3 N- K( z
& [5 G1 ~# r7 t {8 }) e
/ N1 M2 c' a7 i6 {$ S$ L! x1 k
3、尝试嵌入组件到pyside2 ui中% I# [4 U. g9 O( R; W! b' ~7 w0 T
% |3 W0 X! E' ?# B( l3 m$ N3.1、复制参考的py代码 consolewidget.py 到 gui.widgets 文件目录下
: x& @5 P8 Y0 O, j2 P3 M% O5 w: j1 r/ U% U1 ~
3.2、在Qt Designer 使用 Widget(基类/父类) promote to ConsoleWidget,并修改对象名称,操作如下图:0 [; d( w2 _/ s" B
# u( {! W$ g# ?# O/ m! f5 _
6 t \. d( u% L1 @
3.3、ui显示样式修改1: widget 样式表 G8 D* @) V8 i2 w# p- c
4 f- h& u' h c( N/*设置父类窗体,背景边框等属性*/
4 U$ v/ O* ]; [QWidget {3 M5 Z, ?/ J* [5 D# C
background-color: rgb(33, 35, 45);
/ K6 t+ n6 l+ K% H2 W padding: 8px;# I) j" R. h ` {) D5 \! ]% `
border: 2px solid #c3ccdf;
7 e5 f1 W2 w+ B) ^' t color: rgb(255, 255, 255);
/ r$ t1 S; H* b6 t ]* g) d% P) ` border-radius: 10px;, g: }& P& t% `8 e& Y! z$ z
}
% H* m$ C2 b9 e) G$ E1: `, f) [; U& a5 B
2
( h$ V- F! E k3
+ Q5 @7 L o- T9 H6 P e42 L l2 L) i2 i- E
5/ B! B1 `/ s, F A/ I" Q
6$ Y" O& t# _, A
7
$ f8 q: G. {: Z, V3 }8: V+ y" T' A6 x4 ~* s
3.4、ui显示样式修改2:qtconsole启动界面风格指定% `; e5 q8 P. z. E9 ]
self.set_default_style('linux')4 O& K4 V% K6 O# c
1
8 c& x* o8 F- K& `3.5、该窗口的实例化在uic自动生成的代码中4 e9 z) j/ H' q: u
self.ConsoleWidget = ConsoleWidget(self.frame_2)
* K7 |) P: j! m2 l) y( d self.ConsoleWidget.setObjectName(u"ConsoleWidget")) _6 p( K" H. M
19 Z7 T5 T. g; y+ W$ x' H E' i
2) ]$ ?4 j# q7 @* ^! {# X; I! K3 j
3.6、运行效果
( k' j. H7 F$ m* Y+ A4 O9 n( j
% U4 Q5 q$ v' n7 a& b组件2:matplotlib FigureCanvas for qtwidget
/ i( b5 q5 i/ H1、安装相关库, 指定清华源
# p0 E( B. @3 `1 \* |- t pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple8 D% ~6 ?$ K! m
pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
0 Y7 a d4 x! y5 X. L pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
( A+ u! v8 z4 e' m: P% e1& j/ Q( p# r% T& \+ e
2
; \' W, a# a* U8 j! o, f3
& f+ ~+ j% ^% w% @youtube 参考视频+ S5 E- s4 C: n. S! C, J% W
网站教程
! J& }' `, @, A" gyoutube 参考视频: 不同主题风格调整方法,导入csv数据显示
T! w! \$ K! e9 C& U$ w1 C; u1 X2、 复制 MplWidget.py 文件到 gui/widget 目录下
4 `! y7 y4 L# X5 ?* u3、测试 animation, Plotting Live Data in Real-Time
& A/ Z0 q5 b5 r, D9 A1 [
2 T' `0 Q4 M0 f测试方法:plot_live_data(); a7 h" Q3 w. s
个人理解,animation 应该就是定义了一个与UI同线程的定时器。
# _# f( J" S; D2 T9 Q% P组件3:pyqtgraph$ o8 ~1 t N) v4 l' K
参考视频16 @9 O' X+ i! j; ~ q) I
参考视频2 et’s Build an Audio Spectrum Analyzer in Python! (pt. 3) Switching to PyQtGraph
( _1 H% Y$ U+ t# w
) e) u) I4 p$ _" ?8 S1、安装相关库, 指定清华源
4 E: ^$ V7 w) k/ k9 B pip install pyqtgraph -i https://pypi.tuna.tsinghua.edu.cn/simple0 R4 w& J! F$ O2 B8 M
19 n7 e# T; U& D" A
2、在 gui\widgets 目录中增加 pyqtgraph_test.py文件
8 [5 Q2 H- [2 u: A增加 2个按钮(draw, clear) 和 1个pygtgraph窗口控件(PlotWidget) 布局
# }. ]. M8 L# H2 k定义刷新时间,帧率,每隔通道的数据记录最大长度等概念 m0 z8 d. p+ {0 e3 c
注意,每个点之间的采样时间实时性不是QTimer能保证的。
. k! C W' |" `3 v% d1 y还需要想清楚如何保证准确的采样时间,以及与数据刷新时间间隔之间的关系。(参考已有的scope的习惯)
9 j, j! q. n' e" T0 t2 @2 ?: O. u使用 QTimer 定时器, 实现动态刷新的功能, 60FPS -> 定时器时间间隔设定为 1000/60ms Q4 G6 E8 k9 p1 {/ {
调用 self.graphicsView.plot(self.y_vals) 绘图,但注意,重复调用相当于创建多个通道的曲线。如果只想显示一个通道的曲线,有2种方式7 p, l/ ]# x4 B: o* n2 S5 T
方式1:在 plot() 方法前,调用 clear() 方法
' W" k/ w5 j. {: s$ C! S方式2:使用 self.graphicsView.plot.setData() 方法刷新数据,对应的数据清除方法也改一下,改成setData([])+ }& T( V" U7 c$ ~
3、参考 Audio Spectrum Analyzer 代码,优化多通道显示刷新方式6 G. F3 t' l$ ]2 R2 B- |
源工程运行前,需要安装的库,pyaudio使用pip安装会失败,使用管理员模式启用conda终端安装. v8 a. n* f) J- }* c x6 I; t; x+ H
pip install opensimplex -i https://pypi.tuna.tsinghua.edu.cn/simple
6 W& l. m" W; \, C2 ] conda install pyaudio -i https://pypi.tuna.tsinghua.edu.cn/simple% U* o" @# S9 u+ a0 r/ P( F7 x8 o' J
1
+ C, e* [: Q: ~. K q8 O& o! V23 Y: ]- Q' ^ F: Q4 o
参考 self.traces = {}、set_plotdata() 数据结构和方法,优化多通道显示逻辑, F& y" O& y0 H; J9 d
5 k7 b) A6 n: \& z s( W
右键RUN pyqtgraph_test.py,效果如下:- c+ M5 G! \% z, ]( ~
8 s5 v" Q$ [4 x3 |
* z# j5 S5 {& y4 a* @2 ~文章知识点与官方知识档案匹配,可进一步学习相关知识
0 N" e& [9 N( O6 ]3 \3 Y8 {————————————————7 V( o/ X' l" V4 k* N$ ]' I
版权声明:本文为CSDN博主「HUIJIANG123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。) \7 o9 W5 B3 m" U3 X6 K
原文链接:https://blog.csdn.net/u012928587/article/details/1245472308 v" R6 s( i- c( k, n
. Z t5 }& O y9 r* n' ~* q1 z! L' F' T9 Z
|
zan
|