- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 564448 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174557
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
: Y5 b+ O9 }: W" xPython UI设计学习笔记,在学习的UI框架中嵌入其他ui组件:增加组件到主画面的pages中
& n% _7 C" S$ Y8 S
( S$ f1 E J6 U' W: i. V- E0 P R8 y3 L; g5 T
文章目录
" [$ X& Q% R4 k8 `在Pyside2中嵌入其他ui组件:增加组件到`pages`中,在`develop`分支中开发2 m4 _ e( m) A3 X w
组件1:`jupyter qtconsole`& o. j1 G: ^. j: o$ `# V) B
组件2:`matplotlib FigureCanvas for qtwidget`
) C: R0 F0 ?! h, a5 ^9 C组件3:`pyqtgraph` o% m4 i) U6 c0 x
在Pyside2中嵌入其他ui组件:增加组件到pages中,在develop分支中开发
; o! |( X" {. ?8 n4 h# o1 L以下组件部分测试测试参考:0 M9 y1 j- ^ c) `
- _! U$ B. c9 b2 P' J1 S参考的B站视频9 N0 V/ [" w8 V& _0 U9 z
qtconsole 官方文档:The Qt Console for Jupyter5 `4 s9 M% B8 d6 f
组件1:jupyter qtconsole
$ N5 t" [, C1 A- n3 |) c" a/ M1、安装 qtconsole 库, 经测试发现,该库目前不支持 pyside6, 所以更改解释器环境到 pyqt5 or pyside2
/ S; z0 m* N1 S `3 j9 P. b pip install qtconsole -i https://pypi.tuna.tsinghua.edu.cn/simple8 @7 E; _+ p% o9 d) T
1
" I2 w' E6 g3 a& C( m2、尝试启动
( k# d- q$ j3 Q4 t jupyter qtconsole
9 `9 C% |1 p3 J+ `1: I# e4 l+ d; E5 s% S* a0 I
' M2 M; Q; f, \( U: K& a( N: U' o- f
3 I5 X7 T, i: I% X
3、尝试嵌入组件到pyside2 ui中
1 E% }+ \7 A7 N& r8 q! O* y, X$ {; ^( {; m4 y
3.1、复制参考的py代码 consolewidget.py 到 gui.widgets 文件目录下9 ]& m2 Y4 e0 O0 R6 j4 N1 `. S
, T1 P2 p# z# q! g7 c3.2、在Qt Designer 使用 Widget(基类/父类) promote to ConsoleWidget,并修改对象名称,操作如下图:4 w; v! C/ l7 V% J7 C0 ?: t
4 j# p1 @- l, W: \/ f
9 I, n0 g5 H8 _% n1 y
3.3、ui显示样式修改1: widget 样式表
! |( P: p) {! u$ k9 [
" S/ r9 m' S& j5 ^; C9 Q$ q- f/*设置父类窗体,背景边框等属性*/8 Q6 m: H" w d1 e9 k% ]; o# Q
QWidget {2 `9 U! V% F+ \
background-color: rgb(33, 35, 45);
" n0 v$ v; c) F7 @6 f. M0 Q- c; P padding: 8px;$ R. A" Q0 C) R8 _$ S5 _3 @
border: 2px solid #c3ccdf;, O2 a, T0 F: H( ~
color: rgb(255, 255, 255);! ~5 X- n8 ?4 X
border-radius: 10px;
' l7 K$ J/ r' f! u/ z}
2 f/ S- z# g# l9 W. E1( f' s1 I% [/ H1 V$ F+ H4 t
2
' d h& m0 ?2 O+ h r+ G! |3
" w( Y5 |/ [- `' W/ B1 d4
7 P* k4 s) B8 O$ a5 j2 L; B4 e9 S0 f |4 e
68 p; d4 V" k: O4 P; ]7 T2 i1 O
7/ M$ I) b: J" U. O
8' g7 k" ]4 S# _* j$ X& O% i
3.4、ui显示样式修改2:qtconsole启动界面风格指定
' \ w$ @2 P) n+ `) B) v self.set_default_style('linux')
" r9 Y4 T! J+ o+ e4 S, C1& T- S& f2 G, }+ R5 V9 d5 {8 ]2 O
3.5、该窗口的实例化在uic自动生成的代码中
# E4 r: L+ l/ i8 x self.ConsoleWidget = ConsoleWidget(self.frame_2)* h8 w# R$ r4 L% d$ }
self.ConsoleWidget.setObjectName(u"ConsoleWidget")2 O% `9 X, [ V; w0 z" N* b; L
1
( w8 Z+ q! q' y5 ^$ f5 J2$ V. i+ l% x- R! E8 w6 ^
3.6、运行效果+ w( m) O) L; ~
( M, I8 w- I# D
组件2:matplotlib FigureCanvas for qtwidget
" n9 W/ h/ P5 T! l8 Z6 N4 |7 ~1、安装相关库, 指定清华源
. s& u5 A3 Z( b3 J pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
$ _5 g5 a9 c3 _4 N9 m; |1 b6 t8 C pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple7 W! f) v! {% U3 ~7 S8 k+ b5 u5 a
pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
4 I5 p1 g- A) ^, ~. K1: y3 K* j+ K2 G6 ^$ h
2- H, U! \, ~1 Q. _1 M
3* s- _* V7 i6 M
youtube 参考视频4 `, X9 E) [7 b7 N0 x H
网站教程; G4 N. k6 Z4 o4 z) R6 r
youtube 参考视频: 不同主题风格调整方法,导入csv数据显示# C1 {7 M# c& {' a
2、 复制 MplWidget.py 文件到 gui/widget 目录下
. s. K( B$ o; _/ ~% k0 g3、测试 animation, Plotting Live Data in Real-Time2 g2 |# Z" B+ W# Z2 \
( s% U* r% o& m; Z8 ]6 [- S
测试方法:plot_live_data()9 J3 k$ P4 _( a- v, F
个人理解,animation 应该就是定义了一个与UI同线程的定时器。
$ J8 c, {9 K% T组件3:pyqtgraph
1 v% k7 q! S3 z! {参考视频1
F1 Y$ X9 k# N# O! }/ J$ W/ b参考视频2 et’s Build an Audio Spectrum Analyzer in Python! (pt. 3) Switching to PyQtGraph& {, s8 T3 j5 Q9 k- |
7 V, }9 T( ^; Y5 x: }
1、安装相关库, 指定清华源
% y8 T* T) k! U4 W) l2 s9 U M pip install pyqtgraph -i https://pypi.tuna.tsinghua.edu.cn/simple: [+ S2 r* _! B
1$ {! g: L6 _, c. {' L4 q5 c
2、在 gui\widgets 目录中增加 pyqtgraph_test.py文件
) w* L: a6 h/ C0 ]增加 2个按钮(draw, clear) 和 1个pygtgraph窗口控件(PlotWidget) 布局
: R9 E0 z4 Z* D4 G# e+ A! E定义刷新时间,帧率,每隔通道的数据记录最大长度等概念) X& N. J4 t! a" |9 b
注意,每个点之间的采样时间实时性不是QTimer能保证的。7 A* Q. Q/ V( \1 n4 ?5 |
还需要想清楚如何保证准确的采样时间,以及与数据刷新时间间隔之间的关系。(参考已有的scope的习惯)
; z0 @; i' w$ ^ p* c- I4 Q使用 QTimer 定时器, 实现动态刷新的功能, 60FPS -> 定时器时间间隔设定为 1000/60ms
7 K3 k- j8 M. ]7 O调用 self.graphicsView.plot(self.y_vals) 绘图,但注意,重复调用相当于创建多个通道的曲线。如果只想显示一个通道的曲线,有2种方式5 v! W3 S- {0 I* _0 t3 i% h+ X y; T
方式1:在 plot() 方法前,调用 clear() 方法; z/ N9 u+ c5 Z7 F1 s( V& L
方式2:使用 self.graphicsView.plot.setData() 方法刷新数据,对应的数据清除方法也改一下,改成setData([]); j$ r/ a% }2 d6 X' h; @
3、参考 Audio Spectrum Analyzer 代码,优化多通道显示刷新方式
$ E. `2 Z u: S3 R+ j! s9 H: H源工程运行前,需要安装的库,pyaudio使用pip安装会失败,使用管理员模式启用conda终端安装
9 h0 N9 x9 j% K4 k; z pip install opensimplex -i https://pypi.tuna.tsinghua.edu.cn/simple
# l! [4 w: G, j+ @1 o conda install pyaudio -i https://pypi.tuna.tsinghua.edu.cn/simple
' D1 c, V1 y. V2 H0 i# J+ b4 [1
2 h' R& c$ A7 t! o, S* a7 Q! u2 A2
/ s3 [ s1 q4 r9 u, f# f% }8 ~+ m参考 self.traces = {}、set_plotdata() 数据结构和方法,优化多通道显示逻辑
5 s" x0 V% T" T0 n* s& u2 Z) }1 h2 G8 l9 ^# u, a# j
右键RUN pyqtgraph_test.py,效果如下:. b. k0 x- M2 S% C9 D( Y
+ D! K' Z* K" O9 O3 j( t+ O
2 S! \3 ~4 W5 o, G$ ^文章知识点与官方知识档案匹配,可进一步学习相关知识, ]- {. p! \, x! l8 I
————————————————
1 `# Q0 b3 K D8 p- X& p版权声明:本文为CSDN博主「HUIJIANG123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。7 z) p' c0 p4 G' n& h2 ?8 K
原文链接:https://blog.csdn.net/u012928587/article/details/1245472303 L3 ~: m4 d( Z3 G0 C4 k5 j2 s: J
/ m9 ]- a7 c3 q i/ g
. M7 d2 X5 X5 K6 t3 ~/ G3 ?! { |
zan
|