- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 565807 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174965
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
1 [$ z$ V0 V1 `8 [4 G: W& t
Python UI设计学习笔记,在学习的UI框架中嵌入其他ui组件:增加组件到主画面的pages中
+ H2 u1 {& P' M4 ?0 S7 {
* L1 D4 D1 Y6 X8 d; H3 L( F
! C) [" w" b: }- z: X- ]+ s文章目录5 z1 i" q1 \* R y& X5 I: E3 z
在Pyside2中嵌入其他ui组件:增加组件到`pages`中,在`develop`分支中开发1 X* K3 ~" W, I" r2 k
组件1:`jupyter qtconsole`
' H4 o& U5 B% U% U: U组件2:`matplotlib FigureCanvas for qtwidget`* b- d# L3 i& q! h. x/ ~! a
组件3:`pyqtgraph`
/ X- C* `1 q7 p' C1 y3 x在Pyside2中嵌入其他ui组件:增加组件到pages中,在develop分支中开发
1 C4 @7 K- z9 J以下组件部分测试测试参考:
6 O) I8 f1 a% U1 ~
: W( j/ M* E- M$ {* V' v1 l参考的B站视频7 ~) |% L1 G, K& Q
qtconsole 官方文档:The Qt Console for Jupyter/ U1 c1 C% o. j& Q) S3 ^3 @3 h
组件1:jupyter qtconsole- K# `7 m$ b9 R9 E' B" A
1、安装 qtconsole 库, 经测试发现,该库目前不支持 pyside6, 所以更改解释器环境到 pyqt5 or pyside2
8 ^( f$ @) g. ]$ z" x5 h8 L pip install qtconsole -i https://pypi.tuna.tsinghua.edu.cn/simple% j8 l! O4 z# n- v4 N; Q- A
1
4 g3 ~) I9 T* b$ [0 e2、尝试启动# C' p9 [# W l7 R' \
jupyter qtconsole: x) `$ Q6 f x7 r# f- [! U6 A
1
1 ^5 u. E7 Q4 m# ]! O. a6 n
" A6 i$ U" ^4 n* A7 S+ l0 A3 O" a+ {. T' c! i
3、尝试嵌入组件到pyside2 ui中
3 {9 ]1 ^4 d5 C P3 y' @ g4 S! e/ i; X s# Q
3.1、复制参考的py代码 consolewidget.py 到 gui.widgets 文件目录下
( }# L' }) y2 a! u- j: ^2 H( ]6 d4 v! x2 |+ ?, W
3.2、在Qt Designer 使用 Widget(基类/父类) promote to ConsoleWidget,并修改对象名称,操作如下图:; ~. U* N" r2 {9 n7 z
8 m% |( z! o* Z: A6 D! d& z! h% w p5 q% i z
3.3、ui显示样式修改1: widget 样式表$ x) \, ]9 K. y# @' s
4 k# l: e' U+ k7 h# c
/*设置父类窗体,背景边框等属性*/1 g, h, f) X" I! w
QWidget {* r5 H0 d+ }2 W
background-color: rgb(33, 35, 45);
1 c' m! b) {0 O2 G* N4 \! }& g padding: 8px;
, H. ~- H2 i5 d$ r! s border: 2px solid #c3ccdf;
( M7 N! V/ j; @- Q3 X# C0 D) Q% ?1 } color: rgb(255, 255, 255);
, J7 ~ T5 a, d/ y border-radius: 10px;5 R+ H ]( c. w' l
}
6 \8 k' J5 Z2 ^% I1
3 I" t8 k: N) ~$ L2
( Q( n; T2 ] L9 Q& q3
' v8 L9 z: c& V' s! m49 T7 _6 Q) T, B P! C# n
5$ b5 r4 x4 Y0 R# x. \8 H
61 R) q2 y/ S9 P) }. V. _% i4 p8 z4 ^
7' i' \- v! a4 j
85 C8 ?9 W' k/ s5 @. W
3.4、ui显示样式修改2:qtconsole启动界面风格指定
" \' G7 R1 A5 U/ w7 I& C) S4 k self.set_default_style('linux')
. Z( ?' A: H# ^" P+ u6 H13 T% ^% m0 t4 Q, A
3.5、该窗口的实例化在uic自动生成的代码中
; ~& J( V, ~# t c5 |* H' } self.ConsoleWidget = ConsoleWidget(self.frame_2)
E% s+ b: z6 F$ r self.ConsoleWidget.setObjectName(u"ConsoleWidget")5 y$ D: L+ k5 \* R0 i* d
13 R6 \7 n) [' I$ C0 m7 d
2
/ G1 D7 b5 v' w$ S6 y, v7 n' l3.6、运行效果' ]) h" U( z; Y0 G" J3 u j( E
- `* c T9 N7 X! [1 w4 B9 E
组件2:matplotlib FigureCanvas for qtwidget# C) _( M8 A X8 E& T# \: K Z9 ?5 X
1、安装相关库, 指定清华源" M' G. t$ A: W7 C( d
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
+ O8 r3 {9 f1 R3 W9 V8 e' k pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple: v. d8 l3 h" w& R& r
pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
3 X; L; S4 z& O1
1 J# _1 A$ [, {+ Q8 o( [' o* j6 o/ q G2( X _0 j: ^; ?! ~/ U0 B
3
# a3 v$ Q, N/ B1 lyoutube 参考视频4 @0 L% h; o" Z+ n( s
网站教程
; t; i% \- s, _5 ~$ ]youtube 参考视频: 不同主题风格调整方法,导入csv数据显示
! x; u6 V% U6 y: A2、 复制 MplWidget.py 文件到 gui/widget 目录下 a/ d" \, Q) \- p- ?; ?3 q/ d! a2 D
3、测试 animation, Plotting Live Data in Real-Time
l$ U* C1 ?) j6 D& x. g
5 x: G* O' j/ p. X2 r: ]测试方法:plot_live_data()! c: [3 w" B8 U: j; j3 }, I
个人理解,animation 应该就是定义了一个与UI同线程的定时器。
+ x: g! f7 ~/ e: m' ~0 o组件3:pyqtgraph
3 {7 C) F1 Q- s$ k参考视频1
$ z& w \3 H/ h9 r3 D" w# l" m9 I参考视频2 et’s Build an Audio Spectrum Analyzer in Python! (pt. 3) Switching to PyQtGraph- |* @' d5 D4 P6 _* |- g" w
3 ` ^0 q+ K7 i: w
1、安装相关库, 指定清华源0 S1 D3 P+ V2 @; i
pip install pyqtgraph -i https://pypi.tuna.tsinghua.edu.cn/simple
, U4 i: p5 x6 u4 k" P! Y8 f1
" I, A9 m1 R- ` f) P- n. ~2、在 gui\widgets 目录中增加 pyqtgraph_test.py文件
/ K) y& a# A* q0 C* p" O增加 2个按钮(draw, clear) 和 1个pygtgraph窗口控件(PlotWidget) 布局" h" b5 S U; Q/ V0 u
定义刷新时间,帧率,每隔通道的数据记录最大长度等概念
/ R {6 R" j8 O* r注意,每个点之间的采样时间实时性不是QTimer能保证的。
8 I# w2 \' f$ I3 Q! O9 H还需要想清楚如何保证准确的采样时间,以及与数据刷新时间间隔之间的关系。(参考已有的scope的习惯)0 D6 y/ ~6 y/ T+ w" v. `
使用 QTimer 定时器, 实现动态刷新的功能, 60FPS -> 定时器时间间隔设定为 1000/60ms) l) d9 [/ R" ^% \+ D
调用 self.graphicsView.plot(self.y_vals) 绘图,但注意,重复调用相当于创建多个通道的曲线。如果只想显示一个通道的曲线,有2种方式
. ~, J# M/ n6 ]4 |方式1:在 plot() 方法前,调用 clear() 方法8 [9 i& k' X, b" a# M0 C; h$ t8 O
方式2:使用 self.graphicsView.plot.setData() 方法刷新数据,对应的数据清除方法也改一下,改成setData([])4 H( P6 ?5 ~1 B. R8 e
3、参考 Audio Spectrum Analyzer 代码,优化多通道显示刷新方式- B2 s' i3 b- [9 O/ g" [( _- E5 F
源工程运行前,需要安装的库,pyaudio使用pip安装会失败,使用管理员模式启用conda终端安装+ `: B5 Q5 Y) J# Q
pip install opensimplex -i https://pypi.tuna.tsinghua.edu.cn/simple
) Q5 l* b L4 P- c conda install pyaudio -i https://pypi.tuna.tsinghua.edu.cn/simple
3 K: N5 A: Y% K2 K8 B. D- i0 i1
9 L k9 l9 `: m; e+ e3 N7 ?25 Q8 S; c# M; F: |' M
参考 self.traces = {}、set_plotdata() 数据结构和方法,优化多通道显示逻辑/ W/ ^( u: z; E7 Y# j) [5 N
; y) x: e5 @. _3 |* D右键RUN pyqtgraph_test.py,效果如下:, M% N5 `+ z$ b
1 c( n A; r: j% e! v$ G6 K; L( q
文章知识点与官方知识档案匹配,可进一步学习相关知识
4 F% }4 m! K3 q; Y5 e. B————————————————
# \* h# _4 p( K3 c: K版权声明:本文为CSDN博主「HUIJIANG123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。! l: U, D2 E2 P4 s+ E) a
原文链接:https://blog.csdn.net/u012928587/article/details/124547230
! {+ b6 t+ o! ]$ p' f- [6 ~* }1 E
& v6 K0 ^1 ?7 |$ X5 I# k; o3 o" c Q: B: g2 A8 r6 T* s
|
zan
|