- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 564697 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174632
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
7 l7 ~7 N7 O4 _$ qPython UI设计学习笔记,在学习的UI框架中嵌入其他ui组件:增加组件到主画面的pages中$ y5 `% z5 K L( p
5 L! U7 S* f- u) M
' e3 V3 k- I# V1 A& g文章目录( J2 g. N& Y% c- t. j) `
在Pyside2中嵌入其他ui组件:增加组件到`pages`中,在`develop`分支中开发
9 j- O+ W( Y: h, X- ^9 O s3 a, O组件1:`jupyter qtconsole`, s) C0 b. O6 d
组件2:`matplotlib FigureCanvas for qtwidget`# I3 a8 R9 ^/ }- O% l' {! v
组件3:`pyqtgraph`, s- Z3 A* U2 A" Z. u' N1 D7 d6 m
在Pyside2中嵌入其他ui组件:增加组件到pages中,在develop分支中开发9 ^) j0 [% i6 i- F) o7 h) J/ Y' h: u
以下组件部分测试测试参考:
, k" d7 T p# c; g$ q0 C+ z+ {9 z/ F$ C+ b2 J
参考的B站视频3 w, E6 p3 d, s; n. Z! Y
qtconsole 官方文档:The Qt Console for Jupyter& ` x3 F9 B3 d T1 x
组件1:jupyter qtconsole
: G V; F/ l- w) I8 E: q ?5 n& A" _1、安装 qtconsole 库, 经测试发现,该库目前不支持 pyside6, 所以更改解释器环境到 pyqt5 or pyside2
. N, z- I- z7 m/ j6 m) W3 J! h pip install qtconsole -i https://pypi.tuna.tsinghua.edu.cn/simple
! B/ A d* _- Q: c2 c: F/ U* I1
8 Y- M# i- t* m! i2、尝试启动
9 i/ V% ]& j% V8 p jupyter qtconsole1 V& m& p' j" I$ {% U/ P7 x
1
% C& T; ~3 b( r6 V8 X) w& B: u4 x( Y" F; p* \' n
* E9 l2 w+ s, i l$ K( Z
3、尝试嵌入组件到pyside2 ui中
( m2 }, W3 r' }: I5 X
. C/ P- m2 F# c# B# `3.1、复制参考的py代码 consolewidget.py 到 gui.widgets 文件目录下/ Q) x% E! G1 V/ k
3 \( J2 V1 G* S: P" ?# F. ^( G0 d
3.2、在Qt Designer 使用 Widget(基类/父类) promote to ConsoleWidget,并修改对象名称,操作如下图:9 o' g! v& h W6 k
$ Y2 `: ^1 M J* ]6 T' S
5 b! I! v$ C1 b+ U( x, i; G
3.3、ui显示样式修改1: widget 样式表
! _& V7 t8 C/ g4 V( y+ q, A) A% m0 }# f5 g1 _" U& M7 T# k
/*设置父类窗体,背景边框等属性*/
& A1 i& X7 S- y" ~# v3 NQWidget {
* Q5 a$ j2 y6 } background-color: rgb(33, 35, 45);
& q+ Q2 b3 E/ ~( q9 ?4 O5 j padding: 8px;
5 Q# ~; Q+ C9 O" r3 M& [5 ] O border: 2px solid #c3ccdf;% u% U7 X, v3 p2 ^
color: rgb(255, 255, 255);% m( y: i8 c( ?3 l0 R
border-radius: 10px;* g- |& `1 l# O
}
) w8 H, f' T( a15 B2 P) a% o& i+ \* [- j
2# j( Y% H1 `% h
34 f0 z+ I. @* a* z6 g' v3 ?
4
, W- |0 a/ ] C3 C' _, m- J5
- R! N+ {! T: V# V: l- L$ s67 p" Q0 _4 w- h, I
7
# |# k$ W& O3 |/ G1 W3 ^ S8( s" G% T- O0 F C
3.4、ui显示样式修改2:qtconsole启动界面风格指定
: [3 r! V5 s7 t2 a: F self.set_default_style('linux')
0 ]; G$ ~% i6 s& Z, D1: e! J: P5 t. }% y) L
3.5、该窗口的实例化在uic自动生成的代码中
! V; d {! Q6 r, r self.ConsoleWidget = ConsoleWidget(self.frame_2)
7 s- }7 a- u, p) t' C. r3 z5 Q- [ self.ConsoleWidget.setObjectName(u"ConsoleWidget")) i2 ~/ w @% b P& n9 O- o
18 {& b1 s& h } z3 d$ O
29 P$ n* H ?* S# \; h1 m4 u
3.6、运行效果% X |: o7 {( y) h
& J; N3 Z' G8 f9 T
组件2:matplotlib FigureCanvas for qtwidget5 }- ~" d# \: {0 }# l* K
1、安装相关库, 指定清华源* R" v I% }' K* r
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
1 C6 M3 y8 ~+ U8 G/ [8 [ pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
9 i8 S: {. [: L8 m: [* Z! w pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple+ Z) P- C$ ^2 |7 w! T
1$ C4 V! G; o2 B1 _! }6 d; Q, v
2- b) \, U5 p+ ^
3
+ n8 Y& ^& p5 [( t3 N! Kyoutube 参考视频/ Y' o7 ]2 q6 o/ y7 O: M9 \
网站教程 T. w' [& Q' t; U4 ^
youtube 参考视频: 不同主题风格调整方法,导入csv数据显示0 r- G$ Q) \# B- m
2、 复制 MplWidget.py 文件到 gui/widget 目录下: T0 }- u/ C/ C5 K' Q2 j) e
3、测试 animation, Plotting Live Data in Real-Time
/ E% p9 h7 F" {1 L4 A e o% z3 A6 o* ~2 j" Z
测试方法:plot_live_data()! ^- i* E9 q3 n- G( m. ?7 w4 J) @
个人理解,animation 应该就是定义了一个与UI同线程的定时器。
4 P$ @7 r% d+ p7 _: C6 x组件3:pyqtgraph
0 n4 e8 Y n- V参考视频1 n n1 W* h( I/ y* ~2 D. ]. F6 \& B
参考视频2 et’s Build an Audio Spectrum Analyzer in Python! (pt. 3) Switching to PyQtGraph$ x) I% A( |) K b
4 B( j2 N$ [( H$ b, F" L1、安装相关库, 指定清华源, v- H8 ?" _$ S
pip install pyqtgraph -i https://pypi.tuna.tsinghua.edu.cn/simple
9 G" E* D6 Y2 |2 [( n5 p1
7 D8 v' o5 E% Q7 ]* e& T3 N2、在 gui\widgets 目录中增加 pyqtgraph_test.py文件
3 q& b0 ^6 c- b3 y2 `2 X0 ~增加 2个按钮(draw, clear) 和 1个pygtgraph窗口控件(PlotWidget) 布局9 S7 m8 F S4 m' l, M* S; R
定义刷新时间,帧率,每隔通道的数据记录最大长度等概念1 E* L- ^3 F5 g( E9 b0 X" H
注意,每个点之间的采样时间实时性不是QTimer能保证的。
+ d0 O$ y* ^7 \. F- J! e. G还需要想清楚如何保证准确的采样时间,以及与数据刷新时间间隔之间的关系。(参考已有的scope的习惯). A0 }5 t/ y8 R
使用 QTimer 定时器, 实现动态刷新的功能, 60FPS -> 定时器时间间隔设定为 1000/60ms& n3 h7 e7 {" ?
调用 self.graphicsView.plot(self.y_vals) 绘图,但注意,重复调用相当于创建多个通道的曲线。如果只想显示一个通道的曲线,有2种方式
l' H" C; B3 F# _方式1:在 plot() 方法前,调用 clear() 方法" T$ p( Y! R6 C3 @
方式2:使用 self.graphicsView.plot.setData() 方法刷新数据,对应的数据清除方法也改一下,改成setData([])# u9 g v$ {( z$ _ a1 i
3、参考 Audio Spectrum Analyzer 代码,优化多通道显示刷新方式
5 e; d2 U) V8 ~5 I! e源工程运行前,需要安装的库,pyaudio使用pip安装会失败,使用管理员模式启用conda终端安装
$ C# s. w/ I/ A" e' } pip install opensimplex -i https://pypi.tuna.tsinghua.edu.cn/simple- @9 m/ S/ d- d# T
conda install pyaudio -i https://pypi.tuna.tsinghua.edu.cn/simple G1 U6 V) B5 ?- G3 c1 |
19 u' M. Q) ]% ]' L/ z
2
1 z9 N2 M( g) O8 ~/ |) P G/ j5 f参考 self.traces = {}、set_plotdata() 数据结构和方法,优化多通道显示逻辑. ]5 }( L5 i8 I- F/ n+ w N8 h
; j, s) N4 [5 h7 ^7 P- U' t
右键RUN pyqtgraph_test.py,效果如下:( W4 C6 P, B* w0 n2 o9 [
2 b" B" J5 g6 `
1 S+ e! {0 j" ~% {2 T: ]
文章知识点与官方知识档案匹配,可进一步学习相关知识
0 Y- [* B# ~, Q% _————————————————
& @! g9 R' w. w3 e+ O版权声明:本文为CSDN博主「HUIJIANG123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。) E. o* h. w# K
原文链接:https://blog.csdn.net/u012928587/article/details/124547230( \/ |! G8 _; a3 o
+ c" ? C1 Z! _6 r
, B! _- N' I( ]$ d% P
|
zan
|