- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 566297 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 175112
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
& E7 M' E4 a+ w; Z
Python UI设计学习笔记,在学习的UI框架中嵌入其他ui组件:增加组件到主画面的pages中4 z. I; p7 E2 t7 Y" S- t* k
; W% w' m! g, G7 F. Z' `
: `; }3 k' W( ^) m g: x
文章目录# \$ _- u; B! e: V3 P, H+ |, _
在Pyside2中嵌入其他ui组件:增加组件到`pages`中,在`develop`分支中开发
2 n. o9 i2 i# q9 \; d( y. a/ V组件1:`jupyter qtconsole`- o, u1 I1 u2 y
组件2:`matplotlib FigureCanvas for qtwidget`' Z) N: L1 [( g$ g/ [
组件3:`pyqtgraph`
# v2 O& S7 U+ N3 [* M& h1 F! P在Pyside2中嵌入其他ui组件:增加组件到pages中,在develop分支中开发! b$ H1 P" b( i! R
以下组件部分测试测试参考:
& t N; w/ W& z6 k# S/ H/ h+ h, m3 J7 a/ C' \7 N2 {
参考的B站视频5 \% H3 c7 ?: P" v. h) }
qtconsole 官方文档:The Qt Console for Jupyter
; K8 z3 w) b3 R- j3 R0 i3 U, m组件1:jupyter qtconsole
3 m3 l% Q) ~0 N3 C1、安装 qtconsole 库, 经测试发现,该库目前不支持 pyside6, 所以更改解释器环境到 pyqt5 or pyside2
, Q. Z e# A$ G. s pip install qtconsole -i https://pypi.tuna.tsinghua.edu.cn/simple ]4 X$ D# \4 {: |3 J! c9 i
1
# ]8 x$ V2 x, M8 T$ s! E- A2、尝试启动
6 }' i$ g! V! y( E' z" N8 n( q: b jupyter qtconsole
. ?$ }3 x: r* n- n1& M$ V# i2 ?# [% H- }* Q* j
8 Z5 W" j) Q8 K$ z, R8 X
/ h7 E; m4 ~5 _4 s4 D: i3、尝试嵌入组件到pyside2 ui中. D, @0 y+ T. f7 ^% R# @
. _3 P6 m) s# j6 O4 y
3.1、复制参考的py代码 consolewidget.py 到 gui.widgets 文件目录下( d" d! V% l, U. E
/ h- `5 `7 B, J! m3.2、在Qt Designer 使用 Widget(基类/父类) promote to ConsoleWidget,并修改对象名称,操作如下图:4 q; H' z8 C; K9 |3 J) }1 E; E$ X
) ^4 c: p$ k& x& W9 Y. v( q" g& ^9 {# C) G( {8 o/ m
3.3、ui显示样式修改1: widget 样式表
, R, F5 M4 k% l
1 }# M. g! B6 ?' E6 V8 G6 m/*设置父类窗体,背景边框等属性*/. x0 Q# `0 W. R; K( P
QWidget {
# P0 T( H+ ~0 N; |2 m1 N background-color: rgb(33, 35, 45);
6 C3 O5 y* p. O( d2 g padding: 8px;
5 p6 |$ t, o( h3 E" n( b9 a1 o border: 2px solid #c3ccdf;+ P1 x" L* ` r
color: rgb(255, 255, 255);1 c' h& N8 O$ c6 i4 E5 J
border-radius: 10px;
, Q5 [( x4 W( Q2 s}$ ^, H+ C4 y& w, G6 F# s: \
1
. N! \$ Q" e/ @; a2! }/ F$ O' v' I- ^1 @
3
$ Q! K$ ~; Z- I% R% C9 I4" S$ U' @3 U$ I9 L6 M
5
# }( P; \- ]1 Q# A! p1 w" z- E2 n6 B. J; f6
9 X; f- I/ ]; R& B7; m% [: O* x; `* z6 [
8
3 k+ [5 Z6 s4 u, C/ W3.4、ui显示样式修改2:qtconsole启动界面风格指定
8 d$ M) ?) Z! ^( K9 A& e4 Q self.set_default_style('linux')
7 _: e n* K3 G8 ~1$ s! U2 l( ~3 W2 q$ Z
3.5、该窗口的实例化在uic自动生成的代码中
2 W6 n" f* _/ ~ G/ `0 R self.ConsoleWidget = ConsoleWidget(self.frame_2)
& g' l6 L f! p! ~9 m self.ConsoleWidget.setObjectName(u"ConsoleWidget"); `! }3 J' {! _9 ?4 Y
1
5 w P# a! R. z p `9 `29 M( e. \+ A8 q2 X! g
3.6、运行效果$ {4 J0 [7 C7 [* ]1 p8 }+ R
( v5 ^/ k# ]$ E; R组件2:matplotlib FigureCanvas for qtwidget
$ x: ~7 a9 f0 S( O1、安装相关库, 指定清华源& [# U6 {* u3 z
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
q- k8 v4 m% s H pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
+ m6 i; ]+ Y- k pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple* [* ^/ _. t/ j& {- Y/ X, q, M$ C2 E
1
7 `- c5 F4 y; M" U# G* d2& s) e' D, v( c; h/ i3 @9 {) K) y! \
3) R; Q" U( y; t9 E: z t
youtube 参考视频
* W# {! z9 Z: s网站教程; J; W; \# G4 r8 I! s H
youtube 参考视频: 不同主题风格调整方法,导入csv数据显示( u4 `. U4 a9 A* D: z
2、 复制 MplWidget.py 文件到 gui/widget 目录下
; g# g) S3 K, X! M' C- }6 M3、测试 animation, Plotting Live Data in Real-Time D: d- s4 _9 V* e
2 n7 B% a& V) `( _/ Q- {, d
测试方法:plot_live_data()
+ A# H- ~+ m! o' R2 [* X. p8 i4 q个人理解,animation 应该就是定义了一个与UI同线程的定时器。2 F8 K' q5 I8 B/ W
组件3:pyqtgraph9 k7 _# k6 \: |4 L
参考视频1
7 q9 P7 ^3 @. q5 q7 A- H8 K参考视频2 et’s Build an Audio Spectrum Analyzer in Python! (pt. 3) Switching to PyQtGraph
0 ?* i9 p$ T: u7 t$ ^0 m8 W# L
1、安装相关库, 指定清华源
, N' l% L6 n# M. h) K6 o pip install pyqtgraph -i https://pypi.tuna.tsinghua.edu.cn/simple
2 M( {* S. D" [$ M: J1 x15 Q) ]$ W3 `+ G8 ?- I# \
2、在 gui\widgets 目录中增加 pyqtgraph_test.py文件) A' X% R/ H7 M; u! q
增加 2个按钮(draw, clear) 和 1个pygtgraph窗口控件(PlotWidget) 布局8 J; M0 V2 W- T- m% t
定义刷新时间,帧率,每隔通道的数据记录最大长度等概念
7 [; c U- e* P9 ], o注意,每个点之间的采样时间实时性不是QTimer能保证的。0 K9 X8 J% ?& i+ }4 a
还需要想清楚如何保证准确的采样时间,以及与数据刷新时间间隔之间的关系。(参考已有的scope的习惯)( E) Y2 g& l% D9 V( c% A" e
使用 QTimer 定时器, 实现动态刷新的功能, 60FPS -> 定时器时间间隔设定为 1000/60ms C3 L) ]" o# y8 }" w
调用 self.graphicsView.plot(self.y_vals) 绘图,但注意,重复调用相当于创建多个通道的曲线。如果只想显示一个通道的曲线,有2种方式
J" K( f$ D) O! `: [ ?方式1:在 plot() 方法前,调用 clear() 方法; I8 v( i. C- j( L( i
方式2:使用 self.graphicsView.plot.setData() 方法刷新数据,对应的数据清除方法也改一下,改成setData([])
+ X. k0 F E: N9 @9 e+ v1 G3、参考 Audio Spectrum Analyzer 代码,优化多通道显示刷新方式
t9 E* Z: M. ^% V源工程运行前,需要安装的库,pyaudio使用pip安装会失败,使用管理员模式启用conda终端安装
7 n( Q" @1 {( C pip install opensimplex -i https://pypi.tuna.tsinghua.edu.cn/simple5 j1 z" }: v6 V" W
conda install pyaudio -i https://pypi.tuna.tsinghua.edu.cn/simple
4 \; g& y( B, C1 [( R1' d5 f- C' p: M! \& `* [' r
2: f) C4 B$ \+ p/ Q) \% r- n
参考 self.traces = {}、set_plotdata() 数据结构和方法,优化多通道显示逻辑6 A3 V' c- I. S/ Z# O# I7 V! t
; K0 j$ _1 T% L. y2 p右键RUN pyqtgraph_test.py,效果如下:
, g1 M1 E. C' E4 q7 t V9 O. E, m
9 l1 Y3 }9 m/ d W5 ]7 `8 \! d. t. T( t
文章知识点与官方知识档案匹配,可进一步学习相关知识7 @, V: X& u! K. E/ G1 A5 E
————————————————$ R+ j; Q# O5 N/ E
版权声明:本文为CSDN博主「HUIJIANG123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
3 l& l9 B& U; e* j3 r! C原文链接:https://blog.csdn.net/u012928587/article/details/124547230) b/ i* K5 w( G) y/ ~
. g I+ g9 s% h$ g& z* ]7 ]+ l
4 z3 r. Z$ v( F2 m( P" X
|
zan
|