- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 569033 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 175933
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
3 r: e& f$ \) B/ c+ {
Python UI设计学习笔记,在学习的UI框架中嵌入其他ui组件:增加组件到主画面的pages中
+ O; P, @' M% I$ r" n/ u( p" \$ U- D0 f- C7 b
7 E) y: f& l6 D' T
文章目录
5 a2 _5 v7 ~! F$ s5 _在Pyside2中嵌入其他ui组件:增加组件到`pages`中,在`develop`分支中开发
# l5 x5 P; p1 X) E6 B( P组件1:`jupyter qtconsole`
4 ^0 t+ S- H. G5 u组件2:`matplotlib FigureCanvas for qtwidget`
5 j9 `# D4 j1 `! b- ~8 f) t组件3:`pyqtgraph`& |0 O' T8 N9 d9 h$ Y- z* I
在Pyside2中嵌入其他ui组件:增加组件到pages中,在develop分支中开发0 K, }; g7 z7 _& t
以下组件部分测试测试参考: T* D6 B' }1 G
6 f e! o6 _3 c参考的B站视频
$ k2 f% p: D7 ?# C/ [qtconsole 官方文档:The Qt Console for Jupyter5 Z$ h/ {4 c" _% m0 |& M
组件1:jupyter qtconsole, j) z' } l3 l1 B+ V9 _
1、安装 qtconsole 库, 经测试发现,该库目前不支持 pyside6, 所以更改解释器环境到 pyqt5 or pyside2
, y. R. P* E( t: K) A pip install qtconsole -i https://pypi.tuna.tsinghua.edu.cn/simple
: ]" w+ P5 W' F- ?1# k$ {! q, s3 I, B7 d+ M
2、尝试启动0 a. S& K6 h* V# w' h( O
jupyter qtconsole1 H9 S8 c1 k. Q# ]# S# N7 T
10 U$ z# j- g$ b) X& @
3 ]0 V0 l1 L3 `- x0 _7 B
2 c0 k' k3 ~, O3、尝试嵌入组件到pyside2 ui中5 }" {. v- F( H1 m- ?: Z$ [
5 Z* Q, n8 d+ `7 w; ~( }
3.1、复制参考的py代码 consolewidget.py 到 gui.widgets 文件目录下
, b, n- V6 \- |) h2 u) k$ P; X
$ M& r5 P/ p! p" U3 f$ [9 s3.2、在Qt Designer 使用 Widget(基类/父类) promote to ConsoleWidget,并修改对象名称,操作如下图:0 J& ~2 b! P; ~% Q' ~
9 l6 r( D d7 `& V: n) @/ r; b. Q8 N& `# k- Q) Z6 i
3.3、ui显示样式修改1: widget 样式表; t& M( y- V. z2 `( k& F
% `1 n/ G' C+ `3 |6 [. k
/*设置父类窗体,背景边框等属性*/
5 z* }4 @0 i/ L2 n- iQWidget {3 F0 v' `3 C2 E
background-color: rgb(33, 35, 45);1 N7 h- \( ^ T2 a% X( ]
padding: 8px; ^9 L9 y0 u' g
border: 2px solid #c3ccdf;
( r1 i9 H: k6 N. \/ q( E% Y color: rgb(255, 255, 255);$ ~$ a6 o9 f/ v& |; P4 s
border-radius: 10px;
9 j; A7 _+ l& h% l3 [}
) n+ O! d. r2 h8 ^8 b, j' O1
7 R2 y% u1 v1 K8 ]4 ]' a2
7 _( H6 V5 ?8 W3
( g7 D; @2 w+ D( J- _4- k N' G& B& M. A, F+ S9 A
5% Q* i6 o' u& C; k
6
* T6 o2 `; M5 R n7+ \' z, D0 V5 ]$ H( S- y9 J
85 P# t8 t' N! x0 s- X
3.4、ui显示样式修改2:qtconsole启动界面风格指定
( y+ a; T7 d% _9 m! a self.set_default_style('linux')
" K$ }) ~) Y* q: ?9 C4 ~8 q1) j& t# [$ t' `0 \
3.5、该窗口的实例化在uic自动生成的代码中
; K# K ?+ ~8 z7 y/ d" y; m3 W self.ConsoleWidget = ConsoleWidget(self.frame_2), F/ W2 y5 g3 @' `
self.ConsoleWidget.setObjectName(u"ConsoleWidget")
1 }7 Z; Z5 d2 x) p+ H1
! y2 A$ T$ ]4 e1 f; \+ ~1 F$ U3 I$ Y2
" \8 V) l- B4 c0 y7 V3.6、运行效果
( L3 ]3 R. {, R& }4 [6 ]6 f/ k* ^' f+ A5 F% b
组件2:matplotlib FigureCanvas for qtwidget
! _1 C8 x, Y$ H7 b' j1、安装相关库, 指定清华源
. U4 y' u1 i' h6 v1 A0 x4 }2 W pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple, u5 q# M8 w% @; w! t T. r4 s
pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple8 R- u' A2 `6 \0 L, b8 g7 a1 u
pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple* Z+ B) q; X0 \0 b: p) E
1
. H0 X3 k6 v) o& f. f2
8 q" }9 K# p( O" X/ N3 U8 n9 q3. I B1 ^2 x5 G( K0 p% X4 `* p
youtube 参考视频) W) t) _* v5 F; @
网站教程
. k5 C7 @4 d7 |2 byoutube 参考视频: 不同主题风格调整方法,导入csv数据显示0 f* b* J( G4 c
2、 复制 MplWidget.py 文件到 gui/widget 目录下
L- M/ ^/ v% U0 k: `$ B" f8 U3、测试 animation, Plotting Live Data in Real-Time: i% r; r$ b( D9 b) H% E
' i% X0 k1 k* z3 ]
测试方法:plot_live_data()
?8 a9 N1 I5 `% S个人理解,animation 应该就是定义了一个与UI同线程的定时器。- S* H7 z2 d" [7 ~' `6 m
组件3:pyqtgraph ^' H. Y; Z8 \- T |9 C& A0 C
参考视频1$ M& F2 _4 f4 j& b
参考视频2 et’s Build an Audio Spectrum Analyzer in Python! (pt. 3) Switching to PyQtGraph
6 q# \$ \$ T3 h7 f
, S# D2 f7 n6 ]1、安装相关库, 指定清华源
" [6 N- g" s, }& r; q7 m9 p& ] pip install pyqtgraph -i https://pypi.tuna.tsinghua.edu.cn/simple
+ T- [4 n! a: N1
# X! [7 N2 z, Q' s7 T1 @4 H( X2、在 gui\widgets 目录中增加 pyqtgraph_test.py文件) |. S5 |0 D6 h- g' l
增加 2个按钮(draw, clear) 和 1个pygtgraph窗口控件(PlotWidget) 布局8 F8 D M" `) ?# I- ?
定义刷新时间,帧率,每隔通道的数据记录最大长度等概念5 S. Y; P' J, ^6 b: w1 ]5 o% ]
注意,每个点之间的采样时间实时性不是QTimer能保证的。
. j0 x! R d/ S6 \6 u; t还需要想清楚如何保证准确的采样时间,以及与数据刷新时间间隔之间的关系。(参考已有的scope的习惯)' E* }9 R/ ], }/ Q8 A; B
使用 QTimer 定时器, 实现动态刷新的功能, 60FPS -> 定时器时间间隔设定为 1000/60ms
* I$ |3 W5 B) G4 t4 X) ]5 X调用 self.graphicsView.plot(self.y_vals) 绘图,但注意,重复调用相当于创建多个通道的曲线。如果只想显示一个通道的曲线,有2种方式6 V5 k+ x7 p" l/ i o9 F
方式1:在 plot() 方法前,调用 clear() 方法
P5 f- V9 G: b$ D6 L) t9 P) ?方式2:使用 self.graphicsView.plot.setData() 方法刷新数据,对应的数据清除方法也改一下,改成setData([])/ e% b3 `5 H( L- T1 A
3、参考 Audio Spectrum Analyzer 代码,优化多通道显示刷新方式
+ i- W! T* M$ E8 O0 T7 w) Z( p源工程运行前,需要安装的库,pyaudio使用pip安装会失败,使用管理员模式启用conda终端安装1 d- y) E/ j/ u
pip install opensimplex -i https://pypi.tuna.tsinghua.edu.cn/simple
/ F+ @1 c+ \, s! n* U& R conda install pyaudio -i https://pypi.tuna.tsinghua.edu.cn/simple2 E0 H" C: P4 Q2 n
1
5 O, s) G& Q0 ^* I( ?2
) F7 ^9 v- W. }参考 self.traces = {}、set_plotdata() 数据结构和方法,优化多通道显示逻辑
; B- c8 C9 R! z8 O8 v) [% v/ c [4 k
右键RUN pyqtgraph_test.py,效果如下:% w+ Y1 [. f$ Y, V% \: x- A
1 o& X1 ]* ]) V7 i5 H7 @- x% D7 z
5 G- n) H' f0 j: z7 `# @( ~# V文章知识点与官方知识档案匹配,可进一步学习相关知识! J% O9 @' M# H! o: I
————————————————
( ~1 q$ o7 E$ s! ?1 O版权声明:本文为CSDN博主「HUIJIANG123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。; P! V: u* {( q
原文链接:https://blog.csdn.net/u012928587/article/details/124547230 p* |! i% N& A% n$ d
" H- i v2 C$ O9 s
' Q, P' V- V b8 h+ A
|
zan
|