5 T# z) o) W. ~; qPython UI设计学习笔记,在学习的UI框架中嵌入其他ui组件:增加组件到主画面的pages中 0 x' \8 m- J; e& \4 B( e) h' I5 R 5 k6 c. \0 J6 r. U N# z 3 I9 P( B3 B- V& r9 J文章目录) N6 c ~0 o( g* D. o
在Pyside2中嵌入其他ui组件:增加组件到`pages`中,在`develop`分支中开发" J" W6 @- r" o$ V2 T/ k
组件1:`jupyter qtconsole` 2 N: T# ^, V+ m: n. L组件2:`matplotlib FigureCanvas for qtwidget` + Z y$ t0 k. `组件3:`pyqtgraph`" \# H. W: k7 Z L
在Pyside2中嵌入其他ui组件:增加组件到pages中,在develop分支中开发 0 L9 K: T* O, f以下组件部分测试测试参考:3 u/ K! _8 }6 U2 M6 l
# i4 q9 Z! t4 V. p& R8 i2 t5 t参考的B站视频# f' s. |0 \0 y& j2 C6 e, L' E
qtconsole 官方文档:The Qt Console for Jupyter* L7 `3 f r# b
组件1:jupyter qtconsole# f2 s& Y8 j$ V3 R4 J
1、安装 qtconsole 库, 经测试发现,该库目前不支持 pyside6, 所以更改解释器环境到 pyqt5 or pyside25 u- n( l0 c" k, S1 W* g# \6 I
pip install qtconsole -i https://pypi.tuna.tsinghua.edu.cn/simple # S2 b1 e5 u, y$ r7 }- z& }1+ G& e% x5 ^& ?6 {8 u$ c
2、尝试启动 + t2 K4 O4 g* w. E* ]3 @ jupyter qtconsole6 }. E. v; l/ a( z- \
1" {& t5 S$ y/ p M1 y4 _1 B8 P6 z
7 B! q( e, I, m& x8 r/ X5 G0 l; p" e; l1 d/ e$ z" H- s
3、尝试嵌入组件到pyside2 ui中! C- R: J! r7 _4 \' T8 g0 _" R
$ J. N' p1 ^2 D7 A
3.1、复制参考的py代码 consolewidget.py 到 gui.widgets 文件目录下 8 M h0 ?+ B3 ?' w! m : P) y8 w3 b. w! |3 l. c3.2、在Qt Designer 使用 Widget(基类/父类) promote to ConsoleWidget,并修改对象名称,操作如下图: . k! D: b! y+ x- v; t3 Z( F6 D! { j, D: {' {) J! ~3 E9 U" e4 [
8 i8 t. W( r0 x7 X: ?. B$ _
3.3、ui显示样式修改1: widget 样式表 $ D. K- n: z6 s2 L$ O- H& d3 L# h4 `9 _% b3 d; l: _
/*设置父类窗体,背景边框等属性*/ " v0 q& H5 F" v- {* C0 Y: X. XQWidget {- o8 L3 t1 D2 i2 ?- J
background-color: rgb(33, 35, 45); 3 J- U- W, L; T e padding: 8px;% n+ w1 V- s0 A) e2 L1 _
border: 2px solid #c3ccdf; 6 J( z1 I5 s: }) { color: rgb(255, 255, 255); + w I" A$ F. G0 W+ o3 G border-radius: 10px;" L6 D1 t5 u+ o* E
}8 K9 E7 h& D* I4 }; M
1 * t" C c q# } q6 N5 T% E: j27 L2 c# R8 Q7 I) D2 Y
3 . v$ K* r! L, E9 O& h% e49 n9 m6 L! v f: X+ D& I! `3 w
5/ X1 j1 C" }" m. s! V. B
6 # q4 @! r9 w; r$ H% H3 H5 c7 8 k3 W: a2 l V4 C7 P8* y9 z- ~& K' ^* F8 N2 y
3.4、ui显示样式修改2:qtconsole启动界面风格指定! ?: u- {8 I, [+ J6 D, s
self.set_default_style('linux'). j% t% M3 E4 ~1 d2 K( \
1 % U: k1 U! n" }- ]: d3 F3.5、该窗口的实例化在uic自动生成的代码中% U, f! s3 Z2 ?* w
self.ConsoleWidget = ConsoleWidget(self.frame_2) , f2 i7 t# x6 E self.ConsoleWidget.setObjectName(u"ConsoleWidget") 7 u( ]: G$ D, Y1% ~* i B* h4 T) q8 _
2 9 O8 g! C% [( D" ]3 i$ M! Z' `0 s3.6、运行效果0 x+ G3 I. n2 j! I! Y" \1 o8 ?
2 y2 P j) f7 R: V) r4 ~& [
组件2:matplotlib FigureCanvas for qtwidget C( C; X4 A w9 a- U* F0 U. N& t
1、安装相关库, 指定清华源 / O/ G$ `- G# L, ]0 q: J pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple- S' f" ]" G& a) w
pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple ; F* m7 ?! Y" s' `) D pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple * K. a6 Z9 R8 l, @9 q i2 J1 0 q* o, f; N' X( H2 % }; f) F9 ?) v |4 v$ v) A3 q( U0 }3- x- v) d, V/ k8 s6 x
youtube 参考视频& M7 C- T1 k' _
网站教程 / x6 D1 v9 A" C& U$ K0 X/ dyoutube 参考视频: 不同主题风格调整方法,导入csv数据显示 # L: v b% @8 n/ f5 ]2、 复制 MplWidget.py 文件到 gui/widget 目录下' I' d/ Y/ j! @1 J! M
3、测试 animation, Plotting Live Data in Real-Time $ [7 U, e) Z- B& d# z 6 ?. h6 h# U" e* S- [1 M2 R测试方法:plot_live_data()$ R# x' G6 q2 u* q
个人理解,animation 应该就是定义了一个与UI同线程的定时器。8 [2 C% B, M( o/ ]
组件3:pyqtgraph4 G. t7 @( s y# F
参考视频1 1 P j- g4 ]9 E/ \1 Q! K+ ?参考视频2et’s Build an Audio Spectrum Analyzer in Python! (pt. 3) Switching to PyQtGraph; \6 E3 D; k. d9 q6 R, R v
8 j6 k% e2 h# V1 R8 V
1、安装相关库, 指定清华源 & Q2 y; M8 r* J, C/ k pip install pyqtgraph -i https://pypi.tuna.tsinghua.edu.cn/simple . V% Q- c0 P/ j1 * z2 U1 |5 C k1 x% G7 {4 q2、在 gui\widgets 目录中增加 pyqtgraph_test.py文件 9 S6 g5 O. S3 I- y2 Z. d2 @增加 2个按钮(draw, clear) 和 1个pygtgraph窗口控件(PlotWidget) 布局$ a" y0 U6 U3 l; @
定义刷新时间,帧率,每隔通道的数据记录最大长度等概念 7 Y6 C& \0 i* |& t! b* V注意,每个点之间的采样时间实时性不是QTimer能保证的。# t/ L6 A; q# n2 v- | F
还需要想清楚如何保证准确的采样时间,以及与数据刷新时间间隔之间的关系。(参考已有的scope的习惯)/ r0 \, \& Q$ b' T: u
使用 QTimer 定时器, 实现动态刷新的功能, 60FPS -> 定时器时间间隔设定为 1000/60ms ) l z+ O9 H0 G) R" H调用 self.graphicsView.plot(self.y_vals) 绘图,但注意,重复调用相当于创建多个通道的曲线。如果只想显示一个通道的曲线,有2种方式9 V" ?* _1 D5 z( j
方式1:在 plot() 方法前,调用 clear() 方法 * o9 a+ Q _% Q2 C- S( q4 z; ^$ c方式2:使用 self.graphicsView.plot.setData() 方法刷新数据,对应的数据清除方法也改一下,改成setData([]) 3 M0 N1 n( J4 _$ E) x* j3、参考 Audio Spectrum Analyzer 代码,优化多通道显示刷新方式2 X" L+ r H1 S, Z; ~
源工程运行前,需要安装的库,pyaudio使用pip安装会失败,使用管理员模式启用conda终端安装2 V3 J* p+ ^4 i! c/ I# k, y
pip install opensimplex -i https://pypi.tuna.tsinghua.edu.cn/simple) U. w, @$ A9 A
conda install pyaudio -i https://pypi.tuna.tsinghua.edu.cn/simple & B* z6 y8 J7 q7 r1. O* X0 V: A* w5 c* [/ A
2 % t3 F" G( z: D- b, e8 s参考 self.traces = {}、set_plotdata() 数据结构和方法,优化多通道显示逻辑% z. U: V, j/ E+ ?' d8 ]
9 p7 U9 p5 e1 V5 L4 {) t( l: U
右键RUN pyqtgraph_test.py,效果如下:) N# I# u9 `7 c5 t* b+ @
' u s( r. l# `; M' e 1 j$ N x2 f8 N, ~* a7 E7 ~" Y文章知识点与官方知识档案匹配,可进一步学习相关知识/ w2 v3 \% ] ^( H# z- X
————————————————. Q9 A2 R3 c% ?
版权声明:本文为CSDN博主「HUIJIANG123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。! l6 l o. _+ M9 s: z
原文链接:https://blog.csdn.net/u012928587/article/details/124547230 t9 L6 u% ~% F% a; q1 C2 S
" @& c! C% R" [5 H- ?