- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 565600 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174903
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
. X, z" k5 W# C' G7 w+ Y6 gPython UI设计学习笔记,在学习的UI框架中嵌入其他ui组件:增加组件到主画面的pages中1 ]8 ?, i0 N* A- {6 b/ W! y
. Q; W8 t* @+ Z0 q
& s* N* `0 N( i% e9 g9 h0 O' Y文章目录& i3 ^+ R; } }/ ^0 a
在Pyside2中嵌入其他ui组件:增加组件到`pages`中,在`develop`分支中开发
$ }* X/ E2 y7 T+ Q+ E组件1:`jupyter qtconsole`
; l2 b5 |0 t3 `$ Z组件2:`matplotlib FigureCanvas for qtwidget`) j+ ^% T& }, V) ^8 p) s
组件3:`pyqtgraph`$ x+ o" W+ D' |
在Pyside2中嵌入其他ui组件:增加组件到pages中,在develop分支中开发
( W0 Y v9 j4 y以下组件部分测试测试参考:. U# [* t$ M; c9 `# `2 T1 O
7 F( G& ] J! R7 | C# t7 A
参考的B站视频( ?4 W1 V& \! c* i" V
qtconsole 官方文档:The Qt Console for Jupyter
. C! [4 {# P! K7 f* K组件1:jupyter qtconsole4 E; r i! T3 P. b% ~6 U I5 u
1、安装 qtconsole 库, 经测试发现,该库目前不支持 pyside6, 所以更改解释器环境到 pyqt5 or pyside2- ~1 S) [% R: `
pip install qtconsole -i https://pypi.tuna.tsinghua.edu.cn/simple
2 O1 j1 R# ~* r l1
5 X' J5 p* f, M$ l6 `/ P- s2、尝试启动+ [8 T: V4 L# q+ D- ]/ |
jupyter qtconsole8 X8 O: d, O8 P/ Y
1% n, Z) t9 ^. m2 G5 @4 W
5 T: Q% b8 b) W3 D+ U% d
}5 b' _! I* _! @5 c, @* a3、尝试嵌入组件到pyside2 ui中: T# n% `5 ?$ c% o" M
% y0 M4 x: @- D& d$ q# I0 v4 j
3.1、复制参考的py代码 consolewidget.py 到 gui.widgets 文件目录下& M9 r3 z/ B. C6 l* P- \
* ~5 Y- n! r* H& c E
3.2、在Qt Designer 使用 Widget(基类/父类) promote to ConsoleWidget,并修改对象名称,操作如下图:
2 \& E# g! t! B+ U9 V% t0 @7 h
$ F5 l& U# E* V6 S4 ]7 `( {* T k8 ?
3 G: k6 h0 L* v0 w }3 R3 p; Q3.3、ui显示样式修改1: widget 样式表- b8 H g" X: i! Y' F: U
) G5 a, O* Y" O, c
/*设置父类窗体,背景边框等属性*/ U! s' y G4 \ w- Z7 Q- G
QWidget {$ K9 a7 l; z/ o0 j& v5 a
background-color: rgb(33, 35, 45);
3 t. j# ?' ` _/ [& U+ A( I padding: 8px;
) n/ d' P4 \! ]: Z( _ border: 2px solid #c3ccdf;+ ^! f! o( }# I: n# z; N
color: rgb(255, 255, 255);
4 [' k$ r" T* o. P i3 Z1 O2 i border-radius: 10px;) ~( m/ _8 Y" P% s" ?
}* y/ U" Z" ^$ E5 m: _5 o, q$ [. ]7 P
1
/ X! q5 X1 h& z) r$ `( W2
. F0 j9 m; H' F9 y. D& t3
* v: J9 c: G ?4% m4 e5 O! ^3 K& T6 G: T1 m5 m
5+ }. ]/ J8 Q1 ?* x, }. v' ~
6
1 ^. } q I6 v* i6 f7
% P' ]' E) I" }4 S$ M* J0 j/ v81 j" p1 @8 A) l3 l }3 R
3.4、ui显示样式修改2:qtconsole启动界面风格指定
# [9 J: k- n7 W3 p self.set_default_style('linux'); z I! L( H/ Y3 A2 o' a
17 }1 Q& j- b1 g, S6 B( [
3.5、该窗口的实例化在uic自动生成的代码中
- ?) Y n9 `5 V self.ConsoleWidget = ConsoleWidget(self.frame_2)
8 l% D$ q% _& Q self.ConsoleWidget.setObjectName(u"ConsoleWidget")" S( I1 |: j, D& ]4 g
1$ C N5 z9 o, F9 W4 D5 r1 Y
2
7 u+ G( L4 I; b9 \) j3.6、运行效果8 U! J% l n$ f# C
6 c5 \( m# N# z: m4 a. S8 ]9 f1 z- ?
组件2:matplotlib FigureCanvas for qtwidget7 V( x4 ?2 F2 r W5 V2 D6 s* e7 ]
1、安装相关库, 指定清华源) q2 R) V1 S0 Z3 Z" L( X" T+ o/ q: Z
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
8 ?$ c+ R1 p4 K, g! ], s( }3 y pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple4 S; |& w. X* }4 b; ?/ B
pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple! U9 A: O6 N ^# l2 x' t& f( e" ^
1
* z; g$ \0 Q# Y7 I) @24 T2 X% C- F4 \9 b$ O/ s
3
+ r: o; e: P( F L% e. cyoutube 参考视频
" U6 \, f. e" i' U! S+ n网站教程# d" i q1 i1 n' M' ~1 @
youtube 参考视频: 不同主题风格调整方法,导入csv数据显示
( |1 x- X- L, j @& x4 L2、 复制 MplWidget.py 文件到 gui/widget 目录下0 M. g% M2 B' F: t. i4 M
3、测试 animation, Plotting Live Data in Real-Time( l" z9 s: I) ^. V z/ o. d3 u
! @5 s# f2 H2 ] p# d: c$ K- ~) p" I% |
测试方法:plot_live_data()# n9 q) E, @5 p* I) Z$ ~. k
个人理解,animation 应该就是定义了一个与UI同线程的定时器。
0 R4 z8 V. Z$ \% v- \# m组件3:pyqtgraph
( Y* b' Q9 g5 g. M1 [参考视频1
- C. m l( C, \7 S参考视频2 et’s Build an Audio Spectrum Analyzer in Python! (pt. 3) Switching to PyQtGraph% |9 e; `9 Q# T/ T; n2 I( p
7 Z) X; O5 E% j$ r
1、安装相关库, 指定清华源6 }; T" D" Z$ U. C
pip install pyqtgraph -i https://pypi.tuna.tsinghua.edu.cn/simple/ C) \' K4 S6 v9 \& P" k" B
15 H8 ^5 ?! q4 g {( z
2、在 gui\widgets 目录中增加 pyqtgraph_test.py文件5 o( t5 c) a, m& k# a- p
增加 2个按钮(draw, clear) 和 1个pygtgraph窗口控件(PlotWidget) 布局; I& o& u: q( _8 C" _
定义刷新时间,帧率,每隔通道的数据记录最大长度等概念
5 }5 m0 O8 g% H! s! b) J注意,每个点之间的采样时间实时性不是QTimer能保证的。% b9 A* D. Q. p! g
还需要想清楚如何保证准确的采样时间,以及与数据刷新时间间隔之间的关系。(参考已有的scope的习惯)
3 ^8 e' r5 M: Y: Y8 U1 r7 F使用 QTimer 定时器, 实现动态刷新的功能, 60FPS -> 定时器时间间隔设定为 1000/60ms! B9 S7 [6 U8 N* E+ b6 Z- y
调用 self.graphicsView.plot(self.y_vals) 绘图,但注意,重复调用相当于创建多个通道的曲线。如果只想显示一个通道的曲线,有2种方式; J+ _: [, e1 K: S+ e8 z l
方式1:在 plot() 方法前,调用 clear() 方法
4 E8 ]! U9 h9 C, |方式2:使用 self.graphicsView.plot.setData() 方法刷新数据,对应的数据清除方法也改一下,改成setData([])* a7 r' T& t/ I" t' s& G5 |
3、参考 Audio Spectrum Analyzer 代码,优化多通道显示刷新方式7 W& P. A' p9 T, F1 W
源工程运行前,需要安装的库,pyaudio使用pip安装会失败,使用管理员模式启用conda终端安装5 B( j3 x9 Y, d) X6 E6 ^) z
pip install opensimplex -i https://pypi.tuna.tsinghua.edu.cn/simple
( W# [" _" C, b; F0 y3 Y* ]; A: z7 p conda install pyaudio -i https://pypi.tuna.tsinghua.edu.cn/simple
' f/ R+ x7 T7 r* ^: X9 z& v18 L: t% B/ t( z0 E! F8 Z; F
2
5 F. ~$ r% X5 b- b4 }参考 self.traces = {}、set_plotdata() 数据结构和方法,优化多通道显示逻辑, [$ j# N3 M- p5 l- q
; }. ]2 W$ ]3 n' d: B右键RUN pyqtgraph_test.py,效果如下:. z _/ B) u6 Z6 Z
3 C' _! @/ e3 p- _
& ~/ V% H/ k: k. e3 l: ^- a文章知识点与官方知识档案匹配,可进一步学习相关知识1 L; N/ _; I- P6 D `
————————————————
3 \; p& c0 y& k0 A/ F# A: ^0 f版权声明:本文为CSDN博主「HUIJIANG123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。$ l: F( Y% z, w' d
原文链接:https://blog.csdn.net/u012928587/article/details/124547230$ x% [. u5 U7 j8 e+ B1 b5 n+ i" x
& h2 n: k \( E8 z* L( T0 t
' z% ^2 D/ R8 ~2 V+ X! L |
zan
|