- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 564709 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174636
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
/ R5 X/ a% N% t) |) _% ]
Python UI设计学习笔记,在学习的UI框架中嵌入其他ui组件:增加组件到主画面的pages中
* r. @/ X( O9 E! _1 r3 k7 `* {& K% x: r( ?2 z5 k H5 Q
7 ], {3 f* J/ ?9 q' |/ `* I/ I, E
文章目录/ @& A; t8 }' ]8 `1 Y
在Pyside2中嵌入其他ui组件:增加组件到`pages`中,在`develop`分支中开发* F: e1 U! Z" i+ ^) @
组件1:`jupyter qtconsole`
1 R6 l! `( V( X9 Z6 o ~组件2:`matplotlib FigureCanvas for qtwidget`7 D! f1 e, v- {, n4 @( i: @+ z
组件3:`pyqtgraph`& d* r! f8 c- l" {0 F0 I( z# ^
在Pyside2中嵌入其他ui组件:增加组件到pages中,在develop分支中开发) k5 X& R5 b9 o. U+ T/ d4 @
以下组件部分测试测试参考:
6 S9 c: d5 W; s' t% `, s4 b" G! P1 ], M% [' @! X
参考的B站视频# x' {* d( P3 f* T W& U0 P8 J( M
qtconsole 官方文档:The Qt Console for Jupyter
2 e6 V: f0 p( W8 A) n8 j3 f组件1:jupyter qtconsole
. b% ?) R' D4 Q5 ]/ b& m; _1、安装 qtconsole 库, 经测试发现,该库目前不支持 pyside6, 所以更改解释器环境到 pyqt5 or pyside2
) g6 B j. G6 l; e9 t& W& ^3 S pip install qtconsole -i https://pypi.tuna.tsinghua.edu.cn/simple
1 S" y+ [" z) ]+ q/ t2 H; t1
. E4 o/ h9 n- T0 s5 K2、尝试启动
, Y2 [, D) k5 O7 n+ C3 K$ i9 g. Z jupyter qtconsole4 l y/ W/ c6 g$ X$ }# a) |
1- r% p/ O" ^4 r5 l
I5 {! x4 H7 C* I G( X# \, ~5 f x) d" F
3、尝试嵌入组件到pyside2 ui中, s+ C4 R; j) a2 G
0 Z+ n( D$ Z: ^, c j& n3.1、复制参考的py代码 consolewidget.py 到 gui.widgets 文件目录下( ~1 D% I1 }* r8 X3 f& S: n
1 [' [$ @) D8 B! B
3.2、在Qt Designer 使用 Widget(基类/父类) promote to ConsoleWidget,并修改对象名称,操作如下图:, |) S6 U- A3 ^9 k# ?
/ \# K+ |8 }! d! h L# O* E% U
6 w2 i$ G* M: Q6 W( I# M) V
3.3、ui显示样式修改1: widget 样式表
: Z/ Z' r) |. Q; i3 Q' v0 b. j9 b
/*设置父类窗体,背景边框等属性*/
& `& ]1 _+ y, L8 N3 ]: O5 z( ZQWidget {
7 x! e g9 I; |( W* I% I+ g4 L background-color: rgb(33, 35, 45);: W1 c5 R. h. s; C8 v
padding: 8px;
- i; y/ Y& H& r. L7 H' A- u border: 2px solid #c3ccdf;6 o4 d/ c" ?3 z4 t
color: rgb(255, 255, 255);
2 B0 G1 p8 a' |' E3 U$ u4 s border-radius: 10px;
, u. d4 D1 _3 m- G& n}
3 Q/ J. O" ^7 [0 k. d; B9 ^ f1+ T4 P4 E& m3 _' N4 ]' e. S
2' D$ R) o: [& p o9 J0 c/ x1 _
3
- Q/ N" D& ~; S# c4* I; W9 z5 }% N: d( z# }8 W
5
" L# {# Z. h. Z9 u6" ^ o& g1 `3 c. F" ?* @: k& s
75 @! u0 ~) V3 m) @
88 H9 z( A8 a; [' @7 f/ l
3.4、ui显示样式修改2:qtconsole启动界面风格指定& D/ {- q5 j& y$ C1 c2 `0 x
self.set_default_style('linux')
) b0 n& l2 g5 |' A15 z: v3 c+ f' F: j8 E( d$ @
3.5、该窗口的实例化在uic自动生成的代码中% @2 v% _3 I+ u; N. m
self.ConsoleWidget = ConsoleWidget(self.frame_2)9 q) k5 I+ A2 T
self.ConsoleWidget.setObjectName(u"ConsoleWidget")
3 O! W2 O) u+ ~5 G/ V& s1
8 v1 h( V2 i* s2
. l Q* U! U6 l, g6 n' N3.6、运行效果1 F% B1 q" ~8 N# S! ~3 P# b% e
. K1 t7 r" N8 f1 x组件2:matplotlib FigureCanvas for qtwidget1 p7 U; |& \% d' |# J0 R: {
1、安装相关库, 指定清华源# h+ h! P, D8 y2 G2 V
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple# e: e8 d* T1 y) ^ a+ \4 A
pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
" x% V6 ~8 T7 |+ j# M( b. M1 A; d! D pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
) j" g C8 z: \; m' ]19 P2 V! R p$ w
2
4 w4 H: E" @3 N9 `2 p37 b- W# C; m" ]$ J, D# h7 |4 K6 p
youtube 参考视频9 U! \+ u3 Z3 A& [: g& z% v, Y
网站教程
5 x0 @ Z! S( wyoutube 参考视频: 不同主题风格调整方法,导入csv数据显示
) ]6 P! R( R, N2、 复制 MplWidget.py 文件到 gui/widget 目录下. S6 i0 q& A5 g6 X- H
3、测试 animation, Plotting Live Data in Real-Time+ z# R# [; h5 {
$ Q! [$ P3 e4 T, M4 l* X2 B* P. c测试方法:plot_live_data()
1 e: L7 G9 N% G2 Q- Y个人理解,animation 应该就是定义了一个与UI同线程的定时器。# U, W8 T3 S( a) I+ v
组件3:pyqtgraph
D/ y4 |6 y9 x3 @2 Z3 g参考视频1
$ c0 F- |! Y( w2 i" h3 {参考视频2 et’s Build an Audio Spectrum Analyzer in Python! (pt. 3) Switching to PyQtGraph4 i2 ^$ x/ Q& ?- I* d
; Y( Y0 n0 G# r& B+ V1、安装相关库, 指定清华源
3 u9 e, o! k, N `& _9 R: l/ Y pip install pyqtgraph -i https://pypi.tuna.tsinghua.edu.cn/simple
- {1 {% p& w+ d# w( M+ ]; e15 b' }1 f, a9 n9 ]* O6 U( Z. q( l
2、在 gui\widgets 目录中增加 pyqtgraph_test.py文件
6 }! @% H9 {* \# X$ e增加 2个按钮(draw, clear) 和 1个pygtgraph窗口控件(PlotWidget) 布局2 w" [6 `0 o& y) h
定义刷新时间,帧率,每隔通道的数据记录最大长度等概念
5 g/ }4 v5 }& Y" ^* T3 z! @注意,每个点之间的采样时间实时性不是QTimer能保证的。
+ q6 Z! m- o8 q# ?+ _. q+ `$ t; S; O还需要想清楚如何保证准确的采样时间,以及与数据刷新时间间隔之间的关系。(参考已有的scope的习惯)2 \( ]) I- d' d5 h6 o
使用 QTimer 定时器, 实现动态刷新的功能, 60FPS -> 定时器时间间隔设定为 1000/60ms) E" q# N5 e# k
调用 self.graphicsView.plot(self.y_vals) 绘图,但注意,重复调用相当于创建多个通道的曲线。如果只想显示一个通道的曲线,有2种方式
' t- M3 q; f2 L+ M, Y% G方式1:在 plot() 方法前,调用 clear() 方法
- A2 a: A8 f, Z. s3 P8 O/ G7 j方式2:使用 self.graphicsView.plot.setData() 方法刷新数据,对应的数据清除方法也改一下,改成setData([])
6 E+ e L7 B( p3、参考 Audio Spectrum Analyzer 代码,优化多通道显示刷新方式' F' O6 y5 ? Z" o P6 q& v
源工程运行前,需要安装的库,pyaudio使用pip安装会失败,使用管理员模式启用conda终端安装
% R ]: O! Y* O: c pip install opensimplex -i https://pypi.tuna.tsinghua.edu.cn/simple* H5 {& r7 f7 |( a5 a
conda install pyaudio -i https://pypi.tuna.tsinghua.edu.cn/simple( G. w, c# m: J2 c- {
1
% C; N- ?# n+ C- Z8 s% u% a2
: H" w. i" E7 w, u. B4 z9 D6 b7 Z' @参考 self.traces = {}、set_plotdata() 数据结构和方法,优化多通道显示逻辑
, n/ p1 R) B/ h/ g z6 Y5 e, ~; J" X% m# r8 i3 h# Y( |. j5 f" y1 T
右键RUN pyqtgraph_test.py,效果如下:
- ~+ J4 D! {3 @3 _; X; ], u8 X' E% D( G* J( S6 S* {
. Z! a; h/ b, p/ Q8 u: K! T& l" g/ [
文章知识点与官方知识档案匹配,可进一步学习相关知识
! @6 R9 Q. X I! b! \————————————————1 B4 L8 N* }0 t$ T2 x
版权声明:本文为CSDN博主「HUIJIANG123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。. J1 {4 v9 G1 i
原文链接:https://blog.csdn.net/u012928587/article/details/124547230! p" |, _9 w% L! F* g0 N" ?1 j
+ K4 O! x: S/ b6 G* @
! q, C! c5 p+ q9 I4 V |
zan
|