GUI初学者视频功能实现

####1.读取图片

//选择图片路径
[filename pathname]=uigetfile({‘*.jpg,’*.bmp’,’*.gif’},’选择图片’);
//合成路径+文件名
str=[pathname filename];
//读取图片
im=imread(str);
//使用第一个axes
Axes=(handle.axes1);
//显示图片
Imshow(im);
//关闭
Close(gif);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GZq9PCOh-1661566600594)(//img-blog.csdn.net/20180313154812911?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L0RfS2F0dGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QaPSqeVA-1661566600595)(//img-blog.csdn.net/20180313154834937?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L0RfS2F0dGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)]

####2.边缘检测

Button  group 功能函数
Function uibuttongroup1.selectionChangedFen(hObject,eventdata.handles)
//全局变量声明
Global im
//特征提取
Str=get(hObject,’string’);   功能函数里面字符串的提取
//使用图片
Axes(handles.axes1);
//选择项的功能处理
Switch str
Case’
Imshow(im);
Case’sobel’
BW=edge(rgb2gray(im),’sobel’);
Imshow(BW);
Case’prewitt’
BW=edge(rgb2gray(im),’prewitt’);
Imshow(BW);
case’canny’
BW=edge(rgb2gray(im),’canny’);
Imshow(BW);
End;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LjM1Obf0-1661566600595)(//img-blog.csdn.net/20180313155157967?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L0RfS2F0dGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fwLF2J15-1661566600596)(//img-blog.csdn.net/20180313155145115?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L0RfS2F0dGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)]

MATLAB的变量:

在matlab中使用变量可以不同声明,在使用时,程序会自动给其分配内存
在引入变量后,涉及到存储的问题,存在基本工作区间和函数区间
变量储存在基本工作区间,函数储存在函数区间,在相应空间使用的变量只在对应的区间有效。Assign函数可以实现跨用
变量分为3中类型,局部变量,全局变量,永久变量
局部变全局,使用global  a   或者使用hanles.chengji=chengji
SWITCH语句一般是用在functionselcetion中,跟C语言中用法一样
Switch  expression (数值,字符,字符串)
Case   value1(数值,字符,字符串或者多个数值的组合,其中两种表达方式)
Value1:表达一:1|2  表达二:  {3.4}
Statement1
Case value2 
Statement2
End
在执行case语句后,若是没有匹配的,执行otherwise,可以省略

####3.成绩查询系统设计

fin=fopen(‘chengji。txt’,‘r’);
str=fgetl(fin);
【str1  str2  str3  str4】=strread(str,‘%s’,‘%s’,‘%s’,‘%s’,‘delimiter’,‘ ’);
Xingming(1)=str1;
Counter=2;
While feof(fin)==0
Str=fgetl(fin);
【name yuwen  shuxue yingyu】=strread(str,‘%s’,‘%d’,‘%d’,‘%d’,‘delimiter’,‘ ’);
Xingming(counter)=name;
Counter=counter+1;
End;
Set(handles.listbox1,’string’,x ingming);
Handles.chengji=chengji;
Fclose(fin);
Value=get(hObject,’value’)-1;
Set(handles.edit1’string’,num2str(handles.c hengji(value,:)));



[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-loxyTQza-1661566600596)(//img-blog.csdn.net/20180313155326589?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L0RfS2F0dGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2VQ8BEJA-1661566600596)(//img-blog.csdn.net/20180313155334160?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L0RfS2F0dGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)]

####4.读取文本文件
######4.1读取txt文件

fin=fopen(‘chengji,txt’,’r’);
str=fgetl(fin);
【str1  str2  str3  str4】=(str ,‘%s’,’%s’,’%s’,’%s’,’delimiter’,’ ’);
Xingming(1)=str1;
Counter=2;
While feof(fin)==0
Str=fgetl(fin);
[name  yuwen  shuxue  yingyu ]=strread(str,’%s,’’%d’,’%d’,’%d’,’delimiter’,’ ’);
Xingming(1)=name;
Chengji(counter-1,:)=【yuwen  shuxue  yingyu】
Counter=counter+1;
End;
Set(handles.box1,’string’,’xingming’);
Handles.chengji=chengji;
Fclose(fin);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OwJ2zuXI-1661566600597)(//img-blog.csdn.net/20180313155505178?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L0RfS2F0dGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)]
######4.2读取excel文件

【filename  pathname】=uigetfile(‘*.ls’,’choose a  file’);
Str=[filename pathname];
Set(handles.edit3,’string’,str);
[chengji  xingming(1)]=xlsread(str);
Set(handles.listbox1,’string’xingming(:,1));
Handles.chengji=chengji;
Guidata(hObject,handles);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s7jA78kp-1661566600597)(//img-blog.csdn.net/20180313155650854?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L0RfS2F0dGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)]
在读取这个文件的时候,遇到一个问题,弄了很久

Value=get(hObject,’value’)-1;
Set(handles.edit1,’string’,num2str(handles.chenhji(value,;))
使用了num2,实现了数值类型的转换,在excel表格中的数据一定要符合转换后的类型,不然是会出错的。
其中还遇到了一个问题,就是在handles.edit1的时候,这个edit1或者edit2是要根据自己放的图框进行匹配的,
当时没注意,调试了很久,一直说是没有定义这个变量,因此,出现类似的问题,应该检查硬件配置和软件配置是否对应。

######4.3可以有选择性的对文件进行读取

[filename pathname]=uigetfile({‘*.xls’,’excel files(*.xls)’,’*txt’,’txt files(*.txt)’,’*.*’,’*all files(*.*)’},’choose a file’);
L=length(filename);
L<5;
Errordlg(‘wrong file’,’file open error’);
Return;
End
Test =filename(1,L-3:L);
Switch  test
  Case ‘.txt’
Str=[pathname filename];
Set(handles.edit3,’string’,’str’);
Fin=fopen(str,’r’);
Str=fgetl(fin);
[str1 str2 str3  str4]=strread(str,’%s’,’%s’,%s’’,’%s’, ‘delimiter’,’  ’)
Xingming(1)=str1
Counter=2
While feof(fin)==0
Str=fgetl(fin);
[name yuwen  shuxue yingyu]=(str,’%s’,’%d’,’%d’,’&d’,’ delimiter’,’ ’);
Xingming(counter)=name;
Chengji(counter-1,:)=[yuwen  shuxue  yingyu];
Counter=counter+!;
End
Set(handles.listbox1,’string’,xingming);
Handles,chengji=chengji;
Fclose(fin);
Guidata(hObject,handles);
Case ‘.xls’
Str=filename pathname];
Set(handles.edit3,’string,’string);
[chengji  xingming]=xlsread(str);
Set(handles.listbox1,’string’,xingming(‘’,1))
Handles.chengji=chengji;
Guidata(hObject,handls);
Otherwise
Errordlg(‘wrong file’,’file open error’

在学习第三个模块的时候,出现了语法中括号不对称的问题,最后是利用{}这个大括号替换()才解决的问题,
说明在语法方面存在括号的使用规则

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GR6YLxqx-1661566600597)(//img-blog.csdn.net/20180313160406517?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L0RfS2F0dGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YSt9MkPt-1661566600598)(//img-blog.csdn.net/20180313160421906?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L0RfS2F0dGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uxj905SQ-1661566600598)(//img-blog.csdn.net/20180313160430181?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L0RfS2F0dGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)]

####5.播放视频插件

Pos[0  0  0  0];
Moviecontrol=actxcontrol(wmplayer.ocx.7,pos);
Handles.moviecontrol=moviecontrol;
Mp=handles.moviecontrol.controls;
Handles.Output=mp;
【filename pathname】=uigetfile(‘*.*’,’please select a movie….’);
If~(filename)	
Return
End
Handles.moviecontrol.url=【pathname filename】;
Handles.moviecomtrol.controls.play;
Units=get(handles,fiure1.’units’);
Set(handled.figure1,’units’,’pixels’);
Pos=get(handles.figure1,’position’)
Set(handles.fihure1,’units’,units):
Pos[0  0   pos(3 :4 )];
Move(handles.moviecontrol,pos)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iSTxk118-1661566600598)(//img-blog.csdn.net/20180313160539963?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L0RfS2F0dGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1l0Vy2ko-1661566600598)(//img-blog.csdn.net/20180313160553401?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L0RfS2F0dGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)]

####6.参考资料

  1. 网络视频: MATLAB初学者10个视频
  2. MATLAB中文论坛
  3. 《MATLAB GUI设计入门与实践 》
  4. 《罗华飞GUI学习手记》
  5. 源代码下载
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: PyQt5是一款用于创建桌面图形用户界面(GUI)的Python库。它是Qt应用程序开发框架的Python绑定,允许我们使用Python编写功能强大的跨平台应用程序。 对于初学者来说,学习PyQt5最好的方式是通过入门视频教程。这些视频教程通常由经验丰富的程序员或教育机构制作,它们可以帮助我们逐步学习PyQt5的基本概念和用法。 在这些视频教程中,我们通常会了解如何安装PyQt5库和相关的工具。然后,我们将学习如何创建一个基本的PyQt5应用程序窗口,并添加按钮、文本框、标签等组件。随着教程的进行,我们还会了解如何处理用户输入和操作,执行事件处理和响应,以及如何在应用程序中添加其他高级功能视频教程通常结合了演示和实践,帮助我们更好地理解如何使用PyQt5来创建功能丰富的应用程序。此外,还会介绍一些PyQt5的常用和重要的类、方法和属性,以便我们可以更好地理解和掌握PyQt5库的核心功能。 对于初学者而言,入门视频教程是一个很好的起点,因为它们往往有助于快速了解并上手使用PyQt5。通过观看这些视频教程,并动手实践其中的示例代码,我们可以逐渐掌握PyQt5的基本知识,并逐渐提升自己的应用程序开发技能。 ### 回答2: PyQt5入门视频教程是一种学习PyQt5开发的有效方式。它通过教学视频的形式,系统地介绍了PyQt5的基础知识和实际应用技巧。 首先,视频教程会从PyQt5的安装开始,引导学习者正确配置开发环境。接着,教程会详细介绍PyQt5的基础组件,如窗口、标签等,以及常用的布局管理器,如垂直布局、水平布局等。通过实际的代码演示,学习者能够清楚地了解这些组件和布局管理器的用法和特点。 随后,视频教程会介绍PyQt5的高级功能,如事件处理、信号与槽机制等。这些高级功能是PyQt5开发的关键,能够实现更复杂的交互和逻辑控制。通过实例演示和实际练习,学习者可以逐步掌握这些高级功能的使用方法。 除了基础知识和高级功能视频教程还会提供一些实际项目的开发案例,如制作一个简单的GUI程序、设计一个图形界面的计算器等。这些案例能够帮助学习者将所学的知识应用到实际项目中,提升他们的实际编程能力。 总之,PyQt5入门视频教程是一种全面而有效的学习PyQt5的方法。通过观看教学视频,学习者可以系统地学习PyQt5的基础知识和高级功能,并能够通过实例练习提升自己的实际编程能力。无论是初学者还是有一定经验的开发者,都可以通过这种方式快速入门PyQt5。 ### 回答3: PyQt5是一个功能强大且流行的Python GUI库,用于开发桌面应用程序。对于初学者来说,学习PyQt5可以通过观看入门视频教程来提高学习效果。 入门视频教程通常涵盖以下内容: 1. PyQt5介绍:视频教程通常会简要介绍PyQt5的背景和功能,包括它是如何与Python交互以及为什么选择PyQt5进行GUI开发。 2. 安装和环境设置:视频教程会指导您如何下载和安装PyQt5库,以及如何设置开发环境。这些步骤可能包括安装Python、PyQt5以及任何其他必要的依赖项。 3. 基本窗口布局:教程通常会教授如何创建和管理PyQt5应用程序的基本窗口布局。这包括创建和配置主窗口、设置窗口的尺寸、位置和标题等。 4. 组件和小部件:视频教程将向您展示如何添加不同的组件和小部件到应用程序窗口中。这包括按钮、标签、文本框、复选框、下拉框等。您还将了解如何设置这些小部件的属性和监听器,以使其具有交互性。 5. 事件处理: 在PyQt5中,用户操作会触发各种事件,例如单击按钮或更改文本框内容等。教程将教您如何处理这些事件,并编写相应的代码来响应它们。 6. 布局管理器:了解如何使用布局管理器设计和组织PyQt5应用程序的用户界面是非常重要的。入门视频教程将引导您使用各种布局管理器来自动调整部件的位置和大小,以适应不同尺寸的窗口。 入门视频教程初学者提供了一个易于理解和跟随的学习过程。观看视频教程将使您能够通过视觉和实例来掌握PyQt5的基本概念和技巧,从而快速入门这个强大的GUI库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大话硬件

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值