- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 568937 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 175904
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
6 j; Y: b4 v( k& i
Python UI设计学习笔记,在学习的UI框架中嵌入其他ui组件:增加组件到主画面的pages中$ W: c7 e, G5 n0 L+ k; D/ B
" I! d7 }1 `) d. h$ @+ W r- `( A1 n! O0 C1 p* O
文章目录
6 ]3 h/ Z9 ? R; r" Y在Pyside2中嵌入其他ui组件:增加组件到`pages`中,在`develop`分支中开发
8 u, q6 J3 n% a9 N. `) c% |组件1:`jupyter qtconsole`
/ V8 ~ Z6 K: j$ [6 m! b8 e5 ?组件2:`matplotlib FigureCanvas for qtwidget`
9 V0 f8 N; |+ [) N3 _6 L$ r组件3:`pyqtgraph`6 M1 D" k2 Y. h! r4 z4 P: c1 i
在Pyside2中嵌入其他ui组件:增加组件到pages中,在develop分支中开发
& H! ~: D5 K+ X. T5 q) h以下组件部分测试测试参考:
! b9 [( Y4 @& \, p# [' W$ z1 R
5 ^- X& q4 p* w$ R* ?参考的B站视频
' F/ D, ^2 I! D& H0 B' Nqtconsole 官方文档:The Qt Console for Jupyter' b; s2 q. t+ y3 @3 q: D6 i) P0 h
组件1:jupyter qtconsole
2 T9 a# c- C# t& L1、安装 qtconsole 库, 经测试发现,该库目前不支持 pyside6, 所以更改解释器环境到 pyqt5 or pyside2
' z- ]. I' {$ x) ^ pip install qtconsole -i https://pypi.tuna.tsinghua.edu.cn/simple
, z8 D6 x/ z' K O1& Y1 k! ^' H8 z7 Y- t/ S2 [ K
2、尝试启动
Z, f; a* R( R: |: z6 t; P9 ~: j jupyter qtconsole9 ?7 L4 H9 b# s, Z4 l" _
1: L: ?. Y9 i# J
% Q' d- _' E2 `* e4 }3 D5 M: ~
! R, ~8 i9 u8 T0 E: [# }
3、尝试嵌入组件到pyside2 ui中
* K, u: D0 R- C" A/ Q6 i; n; R' [ h" W! ^" v2 Q& x# b: x' b3 V6 W$ d
3.1、复制参考的py代码 consolewidget.py 到 gui.widgets 文件目录下9 J1 X$ l/ Y/ M! H! n v$ B; W
, t/ _7 {$ P' h- r }$ @3.2、在Qt Designer 使用 Widget(基类/父类) promote to ConsoleWidget,并修改对象名称,操作如下图:: b1 ~5 O/ o& c; @2 n
! }+ X; d2 v9 D( Y
" ~9 }+ D# y- p e ?3.3、ui显示样式修改1: widget 样式表
2 O, {- \+ l7 I/ u1 W9 @6 f
" C/ u2 Y1 B) N# B/*设置父类窗体,背景边框等属性*/! i4 y3 k W7 e" S8 s3 n9 F
QWidget {; j# ~0 p. ~( o8 P, R n2 Q
background-color: rgb(33, 35, 45); B$ R F8 |+ R5 S% J0 H# ?* ?+ f
padding: 8px;- }; }1 F4 [2 S" o" l4 n
border: 2px solid #c3ccdf;
; B+ S3 Y- t" e$ C, W5 P color: rgb(255, 255, 255);
$ \" S$ ?# S) m7 u$ ^6 M& \ border-radius: 10px;
a# P1 d% X/ d6 d& D. ?$ C, s}$ Z" \# g- ?: v& E1 p# g( _
1" \3 f; _ `* \ X" o+ @7 ]3 @+ ^
2, `! O0 n v; g4 i
3
! {+ R5 L( B# {3 b) g( j4
) x" z# u- e+ R1 P0 W52 x; [9 O7 b6 K$ m& [9 @* }; |* |
66 S. ]# v: f' H u7 q- M! L
7
2 |. y$ H, h+ s" g8 z8
) Y; ]% m5 b) n0 C. x! b3.4、ui显示样式修改2:qtconsole启动界面风格指定8 G* \$ F# n! Y" |
self.set_default_style('linux')5 X1 h8 t3 j$ V! O0 C5 r$ ~9 c
1
( @7 x! S2 q3 x/ H! A( V7 }" D: u3.5、该窗口的实例化在uic自动生成的代码中9 {) V# \, _4 [ U
self.ConsoleWidget = ConsoleWidget(self.frame_2)
8 g- N/ O0 e) @2 Y self.ConsoleWidget.setObjectName(u"ConsoleWidget")
: _8 Z; ~1 C; \, y2 u1) ^3 S; x8 F, `
2
$ i5 ?( h% d7 @0 K3.6、运行效果
- y/ l1 U4 m1 Q9 L+ V1 {3 g; v) S
/ Y- @6 D6 `: j3 V% r) e# k6 M \' s1 Q组件2:matplotlib FigureCanvas for qtwidget
C. }/ O2 w& Y4 r. _- W( c1、安装相关库, 指定清华源& \! {- a; K- U" w- A
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
4 h7 h4 }9 K9 V$ a' W8 s5 m7 @* h pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple5 Q6 G4 D4 h# q. b# ]* O4 y$ f
pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple* Q& o0 P( w; y6 Z- d- e S8 C k
1
7 _3 x6 S6 Z! l4 w2; q* `" H- [/ _3 B* m1 | a$ Z
39 d- B$ C) |, j
youtube 参考视频
) w" n3 u2 H3 R网站教程7 m* R* R# W5 w9 F' M! [3 ?9 g
youtube 参考视频: 不同主题风格调整方法,导入csv数据显示2 V* \5 K8 S' ?* S* c
2、 复制 MplWidget.py 文件到 gui/widget 目录下! C, Y- h( O7 o3 X
3、测试 animation, Plotting Live Data in Real-Time( R4 M: a( A; {5 J9 W
0 \/ L) Q* ]3 F: g0 B7 a
测试方法:plot_live_data()
1 {( p. _2 B& ?; \个人理解,animation 应该就是定义了一个与UI同线程的定时器。
; E) E6 \* f. F% e; t1 h8 Y" P组件3:pyqtgraph
; [0 v# v' @" [% a参考视频1
# f' s# l5 Q. c参考视频2 et’s Build an Audio Spectrum Analyzer in Python! (pt. 3) Switching to PyQtGraph. w0 o8 S" a2 R/ H- X# ^( l
; q' ?0 y$ b5 p& C) T# m3 Z1、安装相关库, 指定清华源7 O7 I: @% S2 O( p
pip install pyqtgraph -i https://pypi.tuna.tsinghua.edu.cn/simple; Z2 T1 Q% s: D
1 T7 G; I4 Q! i$ S7 d
2、在 gui\widgets 目录中增加 pyqtgraph_test.py文件3 ^# N6 O9 ^6 A" l# }$ h
增加 2个按钮(draw, clear) 和 1个pygtgraph窗口控件(PlotWidget) 布局) K; b+ f; E- L' G; ?
定义刷新时间,帧率,每隔通道的数据记录最大长度等概念: o8 h* `; U' R- h5 c2 A2 k
注意,每个点之间的采样时间实时性不是QTimer能保证的。
! I$ L) ~: Z( `6 ?( ?还需要想清楚如何保证准确的采样时间,以及与数据刷新时间间隔之间的关系。(参考已有的scope的习惯)$ t" Y' K1 b4 k1 Z1 U+ S. w4 b, i
使用 QTimer 定时器, 实现动态刷新的功能, 60FPS -> 定时器时间间隔设定为 1000/60ms* _8 H6 ?+ f& n
调用 self.graphicsView.plot(self.y_vals) 绘图,但注意,重复调用相当于创建多个通道的曲线。如果只想显示一个通道的曲线,有2种方式
1 a" M) r' k" o5 S7 w方式1:在 plot() 方法前,调用 clear() 方法( ^, c R0 a9 F) g: a# j3 V
方式2:使用 self.graphicsView.plot.setData() 方法刷新数据,对应的数据清除方法也改一下,改成setData([])+ c0 I Q7 t4 r0 H# b
3、参考 Audio Spectrum Analyzer 代码,优化多通道显示刷新方式* Z) r6 n/ G, z9 Q
源工程运行前,需要安装的库,pyaudio使用pip安装会失败,使用管理员模式启用conda终端安装& _8 N! f& b& q1 R6 w; e" N& c
pip install opensimplex -i https://pypi.tuna.tsinghua.edu.cn/simple1 |" \+ O7 C/ @% ~1 t
conda install pyaudio -i https://pypi.tuna.tsinghua.edu.cn/simple
3 ?+ g& _* |/ u l, q2 e9 X1
' g4 f8 e) a+ ^" Y2, e5 h: y# V, l) g9 X
参考 self.traces = {}、set_plotdata() 数据结构和方法,优化多通道显示逻辑
/ Y- c+ w+ c$ @, e' j% d( q2 f }0 [, P! K, _; m9 y- z' G
右键RUN pyqtgraph_test.py,效果如下:: L ]2 B; v0 V }
0 j6 ]5 \% G+ p$ I
N2 I: }+ h2 W M$ m }
文章知识点与官方知识档案匹配,可进一步学习相关知识
2 B8 G0 }) v8 `2 @9 v" {# b1 Z————————————————
1 o' X) |1 D i* o% h# q/ ~版权声明:本文为CSDN博主「HUIJIANG123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。+ |- T3 t- P$ y, E, `- x/ P
原文链接:https://blog.csdn.net/u012928587/article/details/1245472300 V3 Z. h; |, f" D, \
( G" L3 g5 j3 S& \ X* U
% S2 H" d b- Z( I! f1 ]) ?
|
zan
|