- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 565171 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174774
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
5 J! \3 H1 ^: f9 t- P( ~Python UI设计学习笔记,在学习的UI框架中嵌入其他ui组件:增加组件到主画面的pages中. l8 Z1 s& X3 u$ l2 y! B
$ N0 g2 k3 z( z- u
& W3 E3 `. \& o2 R' y' S文章目录0 O0 @" d6 o0 |; W
在Pyside2中嵌入其他ui组件:增加组件到`pages`中,在`develop`分支中开发2 y! r; H. P1 u( V3 ^
组件1:`jupyter qtconsole`
; |; q: x1 v) f- G组件2:`matplotlib FigureCanvas for qtwidget`1 D1 z' `7 ~7 |2 ?& q, a0 B4 l
组件3:`pyqtgraph`
7 S1 d' e# x3 ?& ~ a# C2 W9 K/ _在Pyside2中嵌入其他ui组件:增加组件到pages中,在develop分支中开发) _1 j2 Z$ i9 U# i5 Q0 r7 c: P7 C
以下组件部分测试测试参考:
* B1 f" h, d+ `8 q0 f' Q% t4 n7 F6 D* t9 f$ }+ i* j) L! q
参考的B站视频* l. r8 z- x& Z7 H- y
qtconsole 官方文档:The Qt Console for Jupyter
& _% H" D8 k* w5 Q5 o* s组件1:jupyter qtconsole K9 v4 c1 C) H2 h
1、安装 qtconsole 库, 经测试发现,该库目前不支持 pyside6, 所以更改解释器环境到 pyqt5 or pyside2
1 C. T4 W1 U( `" C2 a pip install qtconsole -i https://pypi.tuna.tsinghua.edu.cn/simple- a$ Q$ |) @ y
18 j4 A& M: G4 a( W- [
2、尝试启动
8 F' z& F2 U6 {4 Z; @% c jupyter qtconsole( z. H. P0 G w
1
: u5 H# B# R/ y7 @
" ~ D8 g, D; U H+ u6 k/ ~
. s& Y: u+ L. R! h# X. [3、尝试嵌入组件到pyside2 ui中
, T, k0 }) g0 Q8 @: q5 S
( S( \# `8 _3 l3 c3.1、复制参考的py代码 consolewidget.py 到 gui.widgets 文件目录下
( T( C3 o( P0 w' k& W7 g3 g
: o/ ?& o7 m( N# W% c8 v3.2、在Qt Designer 使用 Widget(基类/父类) promote to ConsoleWidget,并修改对象名称,操作如下图:7 x6 D- g" v6 h* K4 e
9 o; t/ N9 n, N& ], M! t
0 b. ?- D& J) }( V4 A7 I5 ~* r3.3、ui显示样式修改1: widget 样式表+ Q/ O! W4 Z/ f+ f" Z
8 y4 w9 [0 P, P0 y6 G+ V4 [2 }
/*设置父类窗体,背景边框等属性*/$ |4 g# @# k; g) p
QWidget {: U/ }& G/ X5 x+ Z6 e5 U3 g" h
background-color: rgb(33, 35, 45);
) Z$ x" O: O. O' S* c" O padding: 8px; J6 H; A Y% _, i9 e4 E- N
border: 2px solid #c3ccdf;# C$ F# R- P8 N- ~
color: rgb(255, 255, 255);7 h1 F0 d, {' c5 v+ u7 A
border-radius: 10px;
2 @, H/ ?/ n8 K; V; q) D}% o+ J& R# m1 b. d
1
* A: |' F* g0 p% G% p* e2
4 f) s* t, F( r$ G8 X! v6 `3
- J; N- S& U- J' D6 q! r! e1 u- k4
0 }0 z! E& X7 V3 T5
9 V8 c0 [. E! Q) H6
- ^/ S/ B0 R8 R2 e9 `0 j+ E7$ N% I) R! m, |3 @
8
7 j) s' k: S7 P1 V0 p3.4、ui显示样式修改2:qtconsole启动界面风格指定& ~% C9 ]2 y# y/ J, w
self.set_default_style('linux')' I, e& x- S0 [3 Y4 g8 Z
1. O O$ Y; C. e3 H
3.5、该窗口的实例化在uic自动生成的代码中 _$ c1 L' D2 N; Y3 M6 p1 t
self.ConsoleWidget = ConsoleWidget(self.frame_2)
& Z; y" h8 l& D& x2 S8 S3 s4 L self.ConsoleWidget.setObjectName(u"ConsoleWidget")
6 W6 X9 o8 b9 U1
$ C! M8 T9 G5 [2/ O4 l A" z& R% O3 A, z
3.6、运行效果2 O" e) f9 m8 l, o
2 N5 j8 L" x2 d, ]6 h0 T# m
组件2:matplotlib FigureCanvas for qtwidget
& x3 ^% V1 e2 @1、安装相关库, 指定清华源7 l7 C+ l4 Y/ b4 u
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple8 r" v& a) G2 s& B
pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
3 o# |, W" L9 ~: F* l% }9 L pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
; @7 U; X/ ` u/ l7 S- C/ m+ r* k1
. r6 } [, L3 D- O2 ]% ~1 ]2
8 D5 Q$ d8 W Q- D1 D7 W% {3/ J' f: r: d. N t8 Q0 g" W+ q
youtube 参考视频/ b) L1 Q& }1 R0 @7 M2 M1 }
网站教程, K n; p- u- c8 Z$ J' B- n" {
youtube 参考视频: 不同主题风格调整方法,导入csv数据显示# h. D9 \6 D; ~! n9 h
2、 复制 MplWidget.py 文件到 gui/widget 目录下% b6 p# {( P' N! O) ]: O
3、测试 animation, Plotting Live Data in Real-Time
6 v/ O5 x$ Q5 d; C
% i5 u: a9 e+ @ p4 H9 U! K测试方法:plot_live_data()
8 U6 e: \) E% b4 s个人理解,animation 应该就是定义了一个与UI同线程的定时器。
+ J/ t2 L4 o/ S/ O3 m! U8 I" T. N9 J组件3:pyqtgraph
p9 j: {% `: ~9 G* `+ ?, I参考视频1: f4 ?9 z/ f: x7 K4 h
参考视频2 et’s Build an Audio Spectrum Analyzer in Python! (pt. 3) Switching to PyQtGraph
4 r( R' ^1 L* O, O" i7 S0 B3 H
! C, v0 p6 Z+ V1、安装相关库, 指定清华源
, l1 Q- a7 `$ Y; ]7 ^( o: }% O pip install pyqtgraph -i https://pypi.tuna.tsinghua.edu.cn/simple# _8 Z# l5 C% Y
1; A$ [( [* a+ V6 c1 M5 ]# G
2、在 gui\widgets 目录中增加 pyqtgraph_test.py文件; Z4 Q4 A, I8 s! g, t# _ f
增加 2个按钮(draw, clear) 和 1个pygtgraph窗口控件(PlotWidget) 布局
& T$ ]5 h1 @: R. S6 H定义刷新时间,帧率,每隔通道的数据记录最大长度等概念
7 [3 [- v0 Y- O注意,每个点之间的采样时间实时性不是QTimer能保证的。0 g" o" M/ ?6 p3 }4 s6 q
还需要想清楚如何保证准确的采样时间,以及与数据刷新时间间隔之间的关系。(参考已有的scope的习惯), ~( b# `- I+ ?4 o
使用 QTimer 定时器, 实现动态刷新的功能, 60FPS -> 定时器时间间隔设定为 1000/60ms
, l2 R6 a8 K& ?2 y9 R9 r! I U调用 self.graphicsView.plot(self.y_vals) 绘图,但注意,重复调用相当于创建多个通道的曲线。如果只想显示一个通道的曲线,有2种方式
# F/ r* z$ a. c9 o" i2 O n" d方式1:在 plot() 方法前,调用 clear() 方法
. ]1 d. \. f, z. h- Q& A5 C方式2:使用 self.graphicsView.plot.setData() 方法刷新数据,对应的数据清除方法也改一下,改成setData([])
* r4 T: k; f3 U# ]. Q3 |; B( \. w3、参考 Audio Spectrum Analyzer 代码,优化多通道显示刷新方式
: o9 |4 Q4 l8 T* K$ t源工程运行前,需要安装的库,pyaudio使用pip安装会失败,使用管理员模式启用conda终端安装
( u2 g% ^& s* u$ s2 c pip install opensimplex -i https://pypi.tuna.tsinghua.edu.cn/simple
; ^& ]$ \5 V( u% S conda install pyaudio -i https://pypi.tuna.tsinghua.edu.cn/simple
2 B: s! r: w% x* n+ S# v1
& J% D; ~1 }7 F9 z2
( ^# C c2 q* d: t+ I参考 self.traces = {}、set_plotdata() 数据结构和方法,优化多通道显示逻辑. A! x+ o9 B) K4 ^$ w) V2 U# S
6 M- O; A: k# o/ [5 f右键RUN pyqtgraph_test.py,效果如下:: G# ] Q+ }1 S# y/ p; M% F
; D: j3 o' u2 [3 D; \, o _
- O2 V" Y% ?. c) T5 y! w; \文章知识点与官方知识档案匹配,可进一步学习相关知识
1 f6 O6 K4 u. ]————————————————- w$ w1 k0 ]" Z b$ K& v4 o
版权声明:本文为CSDN博主「HUIJIANG123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。5 C) V5 U) I9 w2 q
原文链接:https://blog.csdn.net/u012928587/article/details/124547230
1 W1 z/ K$ z: s5 E. D4 d: ]) x/ k9 i" L5 z/ Q
. I6 s: W# K, q: h* L' p
|
zan
|