- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 564672 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174624
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
6 R- C7 K T3 d6 wPython UI设计学习笔记,在学习的UI框架中嵌入其他ui组件:增加组件到主画面的pages中9 Q; \3 n" T) C1 i/ a, ?- v2 R
; @; r/ L9 N! [$ E/ F3 u
" p( k! q/ @% ?) k( k文章目录) H, }9 X; _4 v8 m* |& F
在Pyside2中嵌入其他ui组件:增加组件到`pages`中,在`develop`分支中开发. q* o P/ H3 Q0 @
组件1:`jupyter qtconsole`
% L5 C% D c5 ^- B% d+ _6 _/ R组件2:`matplotlib FigureCanvas for qtwidget`4 L! l6 M Q# @* e( R
组件3:`pyqtgraph`
% H) L( y7 p! |( I4 Q在Pyside2中嵌入其他ui组件:增加组件到pages中,在develop分支中开发
2 v8 R. X* I% j0 p$ J, b以下组件部分测试测试参考:) Y& U5 I+ a6 D1 M
) E! y# B) X, R( P; I参考的B站视频0 h) f8 B# M+ d) a9 N( z, y
qtconsole 官方文档:The Qt Console for Jupyter4 d+ b8 v M1 f5 @9 T- R6 V! B
组件1:jupyter qtconsole% s; Q' H( V8 Y8 Z, _9 Y/ `
1、安装 qtconsole 库, 经测试发现,该库目前不支持 pyside6, 所以更改解释器环境到 pyqt5 or pyside2* N @ v5 o& O6 a0 t
pip install qtconsole -i https://pypi.tuna.tsinghua.edu.cn/simple4 u3 G5 G$ v0 ]' a$ a4 b
10 r% V w& e' z* E9 C
2、尝试启动
: R+ o. C3 t# W, Y# b M" J# E8 U jupyter qtconsole
9 N* g8 o) u# |1+ \! x3 V B; ~% g7 f
3 G0 S( _. f- N: }6 V' e1 {
8 C. {1 e! y; ^! H0 t( t3、尝试嵌入组件到pyside2 ui中1 P$ W/ J8 q d4 X8 P" H5 [( |
- ]# o1 L3 u* m7 p) j+ F3 }; ~, n3.1、复制参考的py代码 consolewidget.py 到 gui.widgets 文件目录下
+ f/ C: P& l' u: H7 E& t' c
1 p9 \- @. O, n/ J3.2、在Qt Designer 使用 Widget(基类/父类) promote to ConsoleWidget,并修改对象名称,操作如下图:
& |1 o- L9 S7 i% @/ E3 q4 c1 |3 d2 D+ @# X S. P
& y4 t6 ~0 E% a* S: u3.3、ui显示样式修改1: widget 样式表& b9 K6 Y7 Z& e, @0 {8 ]5 L
% u0 R* l& j% X6 {/*设置父类窗体,背景边框等属性*/
: V1 g% c* o; J0 y: VQWidget {
3 x+ ?5 Q7 z E2 F9 h, u background-color: rgb(33, 35, 45);
8 J" b$ q: C D4 I& }! J8 W! ` padding: 8px;( L$ ^- a' n- v, q% n5 {4 H% f0 F+ i
border: 2px solid #c3ccdf;# y$ B& u$ s% C) h" ~6 d1 a
color: rgb(255, 255, 255);1 A' I" n8 v0 x8 l# }* d' I* T1 B
border-radius: 10px;( r% }6 v; T* J ?* V7 q
}
1 i6 m, t7 q$ X" z& G( R- A! G @1
% T6 d4 }4 k |% |0 z- j2
# K3 T% e: ?" u) @% V2 y3
. A' ^/ H p0 Y4" |* }$ T& ^1 e0 L+ ]
5
6 F) Y; T+ B4 g2 b5 Y5 v65 l6 b% z; o, b' W+ L# V) v+ J
76 t8 h; w4 ]) U/ H! A7 z, t* U
85 ^, W O/ z* A2 h2 z" f: I7 n
3.4、ui显示样式修改2:qtconsole启动界面风格指定: m! e8 S6 ?2 L8 H7 V- J* y
self.set_default_style('linux'). q+ G& B! d9 R5 H
1
, b9 s( |, ~! V, N8 d2 W" x3.5、该窗口的实例化在uic自动生成的代码中+ R* j& a$ Y. `4 `
self.ConsoleWidget = ConsoleWidget(self.frame_2)8 h8 W6 V) K r1 [: p. n6 Z
self.ConsoleWidget.setObjectName(u"ConsoleWidget")
$ p; J9 Z% O( E8 _. Y# P9 Q0 w: s1( e- w6 v& X. T- o: l
2
/ Z; T- Z& @( H6 a8 E) p3.6、运行效果4 ~/ t7 s- W( k7 F
) A, b. i" o6 R: y组件2:matplotlib FigureCanvas for qtwidget
s% P+ y2 X" Y7 O1、安装相关库, 指定清华源0 k8 V: q/ r& J4 I/ a; p
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
6 O1 E; x8 \- @5 q( @1 y4 W3 f8 a pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple) d+ H0 P2 l) X# @0 U
pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
( b7 }$ m: U7 a9 A9 M8 m0 j1
- U; Y: M- u7 e. \1 p) `+ x+ I- x2; f, _ a% D R2 a6 ~
39 [9 y, L0 p; @( q- C
youtube 参考视频; C# T: J. K7 l8 ^
网站教程+ {$ H! Y, ~( ^) S
youtube 参考视频: 不同主题风格调整方法,导入csv数据显示1 V7 \+ c; I" ?% ^ A& a
2、 复制 MplWidget.py 文件到 gui/widget 目录下: l0 r+ {4 S2 \9 k X* j
3、测试 animation, Plotting Live Data in Real-Time1 D5 O2 j& @$ @9 A$ x, C
( {+ ?; S ^, w, c0 {8 ]测试方法:plot_live_data()4 f. z* `! Z5 X: H
个人理解,animation 应该就是定义了一个与UI同线程的定时器。
2 \+ H+ @+ U. O' z组件3:pyqtgraph; m* R @ q' l5 T) M* x6 p
参考视频1- A+ G7 e$ {$ h6 n8 }* L: ?0 |) }
参考视频2 et’s Build an Audio Spectrum Analyzer in Python! (pt. 3) Switching to PyQtGraph+ B8 |0 k! X" P0 c2 o5 v8 i/ M* `
# v% O. j) ]( H3 N
1、安装相关库, 指定清华源2 Q8 V+ W' ?& z$ p6 Z8 t9 C. {( m# w- O
pip install pyqtgraph -i https://pypi.tuna.tsinghua.edu.cn/simple+ U. Q, T' L! O7 g& |2 }
18 g s* x2 p1 @6 l% O
2、在 gui\widgets 目录中增加 pyqtgraph_test.py文件" C+ c' N: a4 T4 C
增加 2个按钮(draw, clear) 和 1个pygtgraph窗口控件(PlotWidget) 布局0 E6 N5 L* W! }# Y d, Z% N
定义刷新时间,帧率,每隔通道的数据记录最大长度等概念3 w) S# }( u% B1 q# Y5 a
注意,每个点之间的采样时间实时性不是QTimer能保证的。
2 {0 N- Z# _; `7 J6 n还需要想清楚如何保证准确的采样时间,以及与数据刷新时间间隔之间的关系。(参考已有的scope的习惯)
v. Q Q; ?+ I j) P, @* j使用 QTimer 定时器, 实现动态刷新的功能, 60FPS -> 定时器时间间隔设定为 1000/60ms2 l+ r5 Y9 v X
调用 self.graphicsView.plot(self.y_vals) 绘图,但注意,重复调用相当于创建多个通道的曲线。如果只想显示一个通道的曲线,有2种方式
/ R+ I& @( t8 a) D% m+ ]方式1:在 plot() 方法前,调用 clear() 方法
8 t5 P% y8 i4 c9 G: e方式2:使用 self.graphicsView.plot.setData() 方法刷新数据,对应的数据清除方法也改一下,改成setData([])# X6 e7 u! M2 p" ~! U; j; [' u
3、参考 Audio Spectrum Analyzer 代码,优化多通道显示刷新方式
+ U' s) H6 a2 d' ~/ n源工程运行前,需要安装的库,pyaudio使用pip安装会失败,使用管理员模式启用conda终端安装
' @9 e l$ {' b P pip install opensimplex -i https://pypi.tuna.tsinghua.edu.cn/simple9 b$ J' @6 e1 P; T' F
conda install pyaudio -i https://pypi.tuna.tsinghua.edu.cn/simple
7 `6 v% [2 s8 H3 M9 ^& i8 Q+ ?) ]3 c1( T+ I# Z# Y: H# M
2 A. H9 I+ Z* v% y* O
参考 self.traces = {}、set_plotdata() 数据结构和方法,优化多通道显示逻辑; w* ^4 t8 j, \9 M1 s& j
( L9 j+ n) F; N1 s0 v右键RUN pyqtgraph_test.py,效果如下:
& n& p# U2 @1 c! q9 _8 c% \1 n: v9 J1 U! E; {8 C6 M& M
# |0 h' K/ ]2 K1 X7 h! V* n7 [
文章知识点与官方知识档案匹配,可进一步学习相关知识
" p1 {7 V0 d$ U/ u. x" h+ y9 n5 P E————————————————* Q% l' B- g; g9 j+ x
版权声明:本文为CSDN博主「HUIJIANG123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
( R2 H/ i4 `% I0 [3 o) n) U原文链接:https://blog.csdn.net/u012928587/article/details/124547230" c7 g8 {3 F& w5 x0 H( n/ ]! n) Z
; w* M8 Z# Y% ?% y" q; h
2 D! N& w5 g5 `% r |
zan
|