‘壹’ matlab里面uigetfile函数的使用
[FileName,PathName,FilterIndex] = uigetfile('*.xls');%获取所选文件信息(文件名、路径等)
if FilterIndex
[A,T]=xlsread([PathName,FileName]);%读取xls文件,具体请看xlsread的帮助
end
‘贰’ python如何调用ui文件
ui文件是Qt生成xml格式的文件,python要使用就得用pyside 或pyqt这其中一个库才能将ui文件转化为py文件,安装pyside库后,在命令行打这一句 : pyside-uic XXX.ui -o XXX_ui.py
‘叁’ uigetfile是什么意思
在matlab的GUI编程中的指令,你可以用help里面查一下,这个事用来显示检索文件的对话框的,格式为:uigetfile('FilterSpec','DialogTitle')或者[FileName,PathName] = uigetfile(...),其中的FilterSpec为'*.m';'*.mdl';'*.mat';'*.*',等等即为文件的格式,DialogTitle为标题名,FileName,PathName分别为选择的文件的文件名及路径名
‘肆’ python 按钮弹出另外一个画好的ui文件
您需要将Qt设计器文件转换为Python文件。
为此,可以对ui文件使用命令行命令pyuic5,rc文件使用命令行命令pyrcc5。在要将ui文件转换为Python,请执行以下操作:pyuic5import-from=widgets-xyour_file.ui-oyour_file.py。
‘伍’ MATLAB中uigetfile()函数的解析
[FileName,PathName,FilterIndex] = uigetfile('*.xls');%获取所选文件信息(文件名、路径等)
if FilterIndex
[A,T]=xlsread([PathName,FileName]);%读取xls文件,具体请看xlsread的帮助
end
‘陆’ Python获取文件信息
#-*- coding: utf-8 -*-
import os
#已知文件名的情况下,可以用这个函数
def getFileInfo(filepath):
info = {}
if os.path.isfile(filepath):
info['TimeCreated'] = os.path.getctime(filepath)
info['TimeModified'] = os.path.getatime(filepath)
info['Size'] = os.path.getsize(filepath)
return info
# 如果只知道文件根目录,但是不知道具体的文件路径,
# 可以先用os.listdir获得文件和文件夹列表
#-------------------分界线----------------------
# 这是回答你的第二个问题。如何找到一个字符串中指定两个字符中间的字符串
# 这里用的是正则表达式
import re
special = "*.?+$^[](){}|\/" #正则表达式中会出现的特殊字符
# 输入参数为原始字符,leftmark表示左边的分隔符号,rightmark表示右边的分隔符号
#函数返回在leftmark和rightmark中间的内容,可能匹配满足不止一次,没有找到就返回空
def matchpattern(str1,leftmark,rightmark):
lf,rt = leftmark,rightmark
#如果需要匹配的字符在正则表达式中时特殊字符,需要给予转义
if leftmark in special:
lf = '\%s'%leftmark
if rightmark in special:
rt = '\%s'%rightmark
pattern = re.compile(r''+lf + '.{0,}'+ rt)
matched = re.findall(pattern,str1)
result = []
if matched:
#如果匹配成功了,就去头去尾,直接取中间的部分
for m in matched:
s = m.replace(leftmark, '')
s = s.replace(rightmark, '')
result.append(s)
return result
else:
return None
if __name__ == '__main__':
print matchpattern("#abcsdfs%sdfsdf*",'%','*')
‘柒’ matlab uigetfile和uiputfile有什么区别
感觉其实功能差不多,就是获得选定文件的文件名和路径,这个两个命令自身不负责文件的读取和存储。
不过uigetfile不能在对话框中任意输入文件名,必须选定已有文件,uiputfile则可以任意输入。
‘捌’ 如何用python做ui界面tkinter
import time
import tkinter as tk
class Window:
def __init__(self, title='nms', width=300, height=120, staFunc=bool, stoFunc=bool):
self.w = width
self.h = height
self.stat = True
self.staFunc = staFunc
self.stoFunc = stoFunc
self.staIco = None
self.stoIco = None
self.root = tk.Tk(className=title)
def center(self):
ws = self.root.winfo_screenwidth()
hs = self.root.winfo_screenheight()
x = int( (ws/2) - (self.w/2) )
y = int( (hs/2) - (self.h/2) )
self.root.geometry('{}x{}+{}+{}'.format(self.w, self.h, x, y))
def packBtn(self):
self.btnSer = tk.Button(self.root, command=self.event, width=15, height=3)
self.btnSer.pack(padx=20, side='left')
btnQuit = tk.Button(self.root, text='关闭窗口', command=self.root.quit, width=15, height=3)
btnQuit.pack(padx=20, side='right')
def event(self):
self.btnSer['state'] = 'disabled'
if self.stat:
if self.stoFunc():
self.btnSer['text'] = '启动服务'
self.stat = False
self.root.iconbitmap(self.stoIco)
else:
if self.staFunc():
self.btnSer['text'] = '停止服务'
self.stat = True
self.root.iconbitmap(self.staIco)
self.btnSer['state'] = 'active'
def loop(self):
self.root.resizable(False, False) #禁止修改窗口大小
self.packBtn()
self.center() #窗口居中
self.event()
self.root.mainloop()
‘玖’ uigetfile
matlab编程中有时想调入电脑中的某个文件,这时不妨用windows传统的文件打开对话框试一试:
[filename, pathname] = uigetfile( ...
{'*.jpg;*.tif;*.png;*.gif','All Image Files';...
'*.*','All Files' },...
'请选择要修改的图片(可多选)', ...
'MultiSelect', 'on');
此函数的用法为
[FileName,PathName,FilterIndex] = uigetfile(FilterSpec,DialogTitle,DefaultName)
FileName:返回的文件名
PathName:返回的文件的路径名
FilterIndex:选择的文件类型
FilterSpec:文件类型设置
DialogTitle:打开对话框的标题
DefaultName:默认指向的文件名
例子:(接来自matlab的帮助)
1.最简单的形式,只设置了一种可选择的文件类型
[FileName,PathName] = uigetfile('*.m','Select the M-file');
2.设置多种文件类型
[filename, pathname] = ...
uigetfile({'*.m';'*.mdl';'*.mat';'*.*'},'File Selector');
3.可以为文件类型设置说明,注意书写格式
[filename, pathname] = uigetfile( ...
{'*.m;*.fig;*.mat;*.mdl','MATLAB Files (*.m,*.fig,*.mat,*.mdl)';
'*.m', 'M-files (*.m)'; ...
'*.fig','Figures (*.fig)'; ...
'*.mat','MAT-files (*.mat)'; ...
'*.mdl','Models (*.mdl)'; ...
'*.*', 'All Files (*.*)'}, ...
'Pick a file');
4.可返回选择的文件类型序号,并且可以设置文件多选,设置文件多选时注意,当只选了一个文件时,返回的filename为字符串,选择多个文件时,返回的元胞类型。
[filename, pathname, filterindex] = uigetfile( ...
{ '*.mat','MAT-files (*.mat)'; ...
'*.mdl','Models (*.mdl)'; ...
'*.*', 'All Files (*.*)'}, ...
'Pick a file', ...
'MultiSelect', 'on');
5.可以设置默认文件名
uigetfile({'*.jpg;*.tif;*.png;*.gif','All Image Files';...
'*.*','All Files' },'mytitle',...
'C:\Work\myfile.jpg')
更多文件对话框,可参考matlab帮助。
一点小技巧:当返回了一个文件的时候,可以用fullfile将路径和文件名组合起来,如
[filename, pathname] = uigetfile('*.m', 'Pick an M-file');
if isequal(filename,0)
disp('User selected Cancel')
else
disp(['User selected', fullfile(pathname, filename)])
end
fullfile的用法如下
f = fullfile('C:', 'Applications', 'matlab', 'myfun.m')
f = C:\Applications\matlab\myfun.m
上传一个自己编的小程序,用来实现图片文件的批量缩放(帮班级上传图片,但是图片太大了,太占空间,若一个一个缩小有太费事,于是就有了这个小程序,呵呵,仅为应用,未考虑异常处理)
%修改图片的大小
%%
clc
clear all
close all
%%
scale=inputdlg('缩放比(大于1为放大,小于1为缩小)','请输入缩放比',1,{'0.5'});
%%
[filename, pathname] = uigetfile( ...
{'*.jpg;*.tif;*.png;*.gif','All Image Files';...
'*.*','All Files' },...
'请选择要修改的图片(可多选)', ...
'MultiSelect', 'on');
%%
if ~iscell(filename)
filename1{1}=filename;
else
filename1=filename;
end
%%
for i=1:length(filename1)
image=imread(strcat(pathname,filename1{i}));
image_resize=imresize(image,eval_r(scale{1}));
imwrite(image_resize,strcat(pathname,datestr(now, 'mmddHH'),filename1{i}));
end
其中的inputdlg函数实现一个要求用户输入信息的对话框,用法如下
answer = inputdlg(prompt,dlg_title,num_lines,defAns,options)
prompt:输入文本框的标签
dlg_title:对话框的标题
num_lines:输入文本框的行数
defAns:默认的文本框内容
options:一些可选的对话框选项
如
prompt={'Enter the matrix size for x^2:',...
'Enter the colormap name:'};
name='Input for Peaks function';
numlines=1;
defaultanswer={'20','hsv'};
options.Resize='on';
options.WindowStyle='normal';
options.Interpreter='tex';
answer=inputdlg(prompt,name,numlines,defaultanswer,options);
返回为字符串,如果想转化为数字,可以是使用函数eval。
另外input函数也可以实现用户信息输入,不过是在命令行中输入,也很简单、常用。