- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 563256 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174200
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
$ m, D# h5 X( C5 ]) p7 U( T
Python UI设计学习笔记,在学习的UI框架中嵌入其他ui组件:增加组件到主画面的pages中
8 I7 u* f2 W" U; K& P7 Q; p+ o# e0 ?# q5 k) [! D
* b$ N! q5 G( r7 ~, T" s/ r文章目录
r. P$ T" L7 A, c在Pyside2中嵌入其他ui组件:增加组件到`pages`中,在`develop`分支中开发2 s6 l1 R- c' L9 x( u6 u
组件1:`jupyter qtconsole`$ u# G* Q$ B6 ]8 z
组件2:`matplotlib FigureCanvas for qtwidget`8 B% w: z$ T" t8 I; E: E
组件3:`pyqtgraph`# s; j- h Q6 V8 U& k! R% _5 W Y
在Pyside2中嵌入其他ui组件:增加组件到pages中,在develop分支中开发
: D7 M" F" i" m5 H% S `以下组件部分测试测试参考:9 v4 Y4 Y9 J0 u a; E6 w, J
' ]8 [5 z! L$ t% ~
参考的B站视频
8 ^' |+ F! z! U" A3 @* X% Q8 r: Gqtconsole 官方文档:The Qt Console for Jupyter% X4 x$ D, j ?5 E. n- K. T3 |
组件1:jupyter qtconsole! b- Y; F+ ?. Z5 i) O, `. @; J9 O4 f
1、安装 qtconsole 库, 经测试发现,该库目前不支持 pyside6, 所以更改解释器环境到 pyqt5 or pyside2 C5 s$ |* u) W9 q. }4 E0 b' w
pip install qtconsole -i https://pypi.tuna.tsinghua.edu.cn/simple" Y5 G2 I! ^" W1 H
15 P4 g& p& Q8 M6 M; h
2、尝试启动/ L$ b) V/ _- r5 V5 R7 t
jupyter qtconsole; h5 A1 i- r8 O' g
1
0 b& _8 i) c& F5 w
# V1 t/ V+ T/ p% ~, d2 l. k7 T% w- F' ?9 [8 q( ^7 m
3、尝试嵌入组件到pyside2 ui中$ }2 L }7 p3 O: q& j
9 [3 M- D5 _, h/ l( k3.1、复制参考的py代码 consolewidget.py 到 gui.widgets 文件目录下2 \) ~& {2 B3 s
" Z, z* T j" U# q3.2、在Qt Designer 使用 Widget(基类/父类) promote to ConsoleWidget,并修改对象名称,操作如下图:: V* C( _1 u' P& t* w0 M
5 F% c1 N8 A# Z) ]" C) b6 g7 j8 a* `, Y
3.3、ui显示样式修改1: widget 样式表
/ x5 Y# B- H' D; ~, |5 f6 u9 Q! q( T6 S; b
/*设置父类窗体,背景边框等属性*/. O- ?( L1 v. F* n
QWidget {( B* c" G6 e$ R- s
background-color: rgb(33, 35, 45);& `% S! r5 y7 Z m# t& u+ g4 J
padding: 8px;
0 v$ H; x8 ` ?$ N! B border: 2px solid #c3ccdf;
. y, }5 M% `3 O$ F6 ^ color: rgb(255, 255, 255);
* P. ?+ }' {- w% C0 e0 x8 ^" }$ h border-radius: 10px;/ W9 \" ?. p6 C8 ^3 H
}
8 a- {, o8 n; W) R p' }. ^2 z12 ?1 j, V# J& Y- ~" i4 d
23 h& b0 r$ m9 W- z" _/ A
38 ~# o3 g/ S* N9 q! Z
43 x @, k: w# o
5 O; ]0 @" `0 ~
6
( A$ X }% L) [6 v1 i7! Q1 }% P5 e I" _. S
8( E" s+ a' k. U& k! y
3.4、ui显示样式修改2:qtconsole启动界面风格指定" C- v, a3 T+ M, G
self.set_default_style('linux')
/ A* h5 M+ g. D1 Q2 p1
" C8 B7 o3 `8 Q E: G! X2 }- ^5 d3.5、该窗口的实例化在uic自动生成的代码中% B) ]/ X& N6 [* a
self.ConsoleWidget = ConsoleWidget(self.frame_2). Z3 y5 a+ d- T* [" Z2 q
self.ConsoleWidget.setObjectName(u"ConsoleWidget")
7 l3 r+ }) @7 ~1 ^% i* {* s. [! j ?3 e
2
# D6 f$ U* L" Z$ s G, G9 L9 Z3 Z3.6、运行效果& n$ N4 b# [- p, t" t8 _
+ i" I) p: R% `# s2 M组件2:matplotlib FigureCanvas for qtwidget
Y" Q* |. A, m3 `0 ]. _1、安装相关库, 指定清华源
1 `2 `3 K; Y4 c5 O pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
: [2 U! h$ ~) U5 j; ?" R pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
. N l9 b! c- V/ v" j9 W. o pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
) Y W9 H: l7 H; q3 e* |/ t- T1
: l2 V% B% I' |5 O* R2! _" u# h5 [' y( O" c8 \2 i
3& ]' N1 }4 g1 i8 @- a6 O# k! ^7 H
youtube 参考视频$ g) N( U. x! d3 Q) B# {
网站教程
, {* a+ w: X" y. X8 u: V* u+ e8 Lyoutube 参考视频: 不同主题风格调整方法,导入csv数据显示 d4 `, J6 z0 |% Z O d
2、 复制 MplWidget.py 文件到 gui/widget 目录下
- t4 B8 G3 I Q, c4 F) y1 |3、测试 animation, Plotting Live Data in Real-Time
. b& L/ V2 v% K8 B
) i! `: \7 h4 i测试方法:plot_live_data()/ K* c* ?+ i1 X4 Q/ S+ Y
个人理解,animation 应该就是定义了一个与UI同线程的定时器。
3 b0 n8 N* R) S7 q6 L4 p组件3:pyqtgraph' |* [! D2 M( w1 w& F: J
参考视频1
9 z$ e/ ]4 d% [2 W参考视频2 et’s Build an Audio Spectrum Analyzer in Python! (pt. 3) Switching to PyQtGraph
. @2 v7 W% |8 t, g8 z* H' _4 P0 u) z6 [5 m3 `
1、安装相关库, 指定清华源
! g7 z( F; w7 r4 [ pip install pyqtgraph -i https://pypi.tuna.tsinghua.edu.cn/simple
, w% Q2 k1 S/ e) K# H. F" {3 Y1( i, P' C' H6 o4 k) X. B
2、在 gui\widgets 目录中增加 pyqtgraph_test.py文件& R, G0 e( u8 p7 ?3 w3 g
增加 2个按钮(draw, clear) 和 1个pygtgraph窗口控件(PlotWidget) 布局
/ m3 O" i3 H* ?0 ]" S7 n G定义刷新时间,帧率,每隔通道的数据记录最大长度等概念 r9 ~2 V0 I9 K" j& ]/ C& p: u* i
注意,每个点之间的采样时间实时性不是QTimer能保证的。
9 J6 `# o, A, t6 t. M) p q+ W还需要想清楚如何保证准确的采样时间,以及与数据刷新时间间隔之间的关系。(参考已有的scope的习惯)0 u2 A3 @& r, D
使用 QTimer 定时器, 实现动态刷新的功能, 60FPS -> 定时器时间间隔设定为 1000/60ms/ l4 |: Q0 Y% r/ i
调用 self.graphicsView.plot(self.y_vals) 绘图,但注意,重复调用相当于创建多个通道的曲线。如果只想显示一个通道的曲线,有2种方式
6 @0 _* T. H" o. z$ h方式1:在 plot() 方法前,调用 clear() 方法 I+ a3 z0 |7 a! d6 M
方式2:使用 self.graphicsView.plot.setData() 方法刷新数据,对应的数据清除方法也改一下,改成setData([])
) M! K# \4 q6 m8 _; c6 _! s3、参考 Audio Spectrum Analyzer 代码,优化多通道显示刷新方式
* z- l U# H3 P$ j/ ^$ v, d源工程运行前,需要安装的库,pyaudio使用pip安装会失败,使用管理员模式启用conda终端安装9 I# _. B6 ?$ `( m5 J. \
pip install opensimplex -i https://pypi.tuna.tsinghua.edu.cn/simple( W# l" R" g- D9 [2 `6 P' F/ R
conda install pyaudio -i https://pypi.tuna.tsinghua.edu.cn/simple2 j1 X9 u( S1 C2 h0 R# o
1
/ W( u" r' H/ Q5 F$ Q$ I26 {7 \% q8 V( ^* d' ~" S3 @
参考 self.traces = {}、set_plotdata() 数据结构和方法,优化多通道显示逻辑5 x, G2 q' m: e9 H9 B! B8 o
* T& J! f! X* }1 @7 h1 j/ c6 y
右键RUN pyqtgraph_test.py,效果如下:
; D/ B# V D+ g4 X& I5 j: A8 j/ A( w) |/ w% G2 p8 E4 c
! _9 Z) y# |4 W% k; K* J
文章知识点与官方知识档案匹配,可进一步学习相关知识+ S, J: |$ Q3 }. \2 ~, [
————————————————6 c' p, e; J+ V7 T3 p0 K+ F7 i
版权声明:本文为CSDN博主「HUIJIANG123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。( ?+ _6 j5 |, L2 |! n
原文链接:https://blog.csdn.net/u012928587/article/details/1245472306 T4 T1 H" m: |0 n3 c1 x
+ ~: o4 ` F4 w0 \1 b. {
. A* U8 ]+ Y1 H9 w& W |
zan
|