-
2021-06-26 10:39:00
什么是交互界面
交互界面是人和计算机进行信息交换的通道,用户通过交互界面面向计算机输入信息、进行操作,计算机则通过交互界面向用户提供信息,以供阅读、分析和判断。
交互界面的发展
命令语言用户界面
在我们还比较小的时候使用的DOS操作系统,或者任何你能够记起来的那些敲入执行命令才能运作的界面系统,它们都属于人机交互的较初级阶段。这种交互手段要求惊人的记忆和大量的训练,并且容易出错,对初学者来说非常不友好,但操作过程比较灵活和高效,适合于专业人员使用。
图形用户界面
这是当前用户界面设计的主流,广泛应用于计算机和携带式屏幕显示功能的电子设备,其中包括大量的手持移动设备。比如我们熟知的Apple的Macintosh、Microsoft的Windows、Sony的PSP等。
广泛采用的核心技术是时间驱动技术。用户通过图形识别与控制交互元素,进行有目的性的操作,但由于文化差异和图形理解的误区,很多操作被演化为尝试,图形用户界面和人机交互过程极大地依赖于视觉和手动控制的参与。
直接操作用户界面
使用一款应用时,用户最终关心的是他想操作的对象,他只用关心任务语义,而不用过多地为计算机语义和句法分心。比如windows的桌面系统,模拟了物理环境中的桌面方式,文件夹的分类让用户了解只要操作文件夹便可找到需要的资料,而不用关系文件夹与系统直接的信息处理过程。
多媒体用户界面
多媒体技术引入了动画、音频、视频等交互媒体手段,特别是引入音频和视频媒体,极大地丰富了表现信息的形式,提高了用户接受信息的效率。在你的手机上,你能够在发送短消息的同时,听到发送成功的提示音,这样你能够在不观察屏幕的情况下,了解系统任务完成情况,这使得你能从单次操作中解放出更多时间。
多通道用户界面
多通道用户界面的引入是为了消除当前GUI和多媒体用户界面通信宽带不平衡的瓶颈,综合采用视线、语音、手势等新的交互通道、设备和交互技术,使用户利用多个通道以自然、并行、协作的方式进行人机对话,通过整合来自多个通道的精确和不精确的输入来捕捉用户的交互意图,提高人机交互的自然醒和高效性。
国外行业内的许多研究涉及键盘、鼠标器之外的输入通道,主要是语音和自然语言、手势、书写和眼动方面,并以具体系统研究为主。
交互界面的主要技术
虚拟现实技术
在虚拟现实中,人是主动参与者,复杂系统中可能有许多参与者共同在以计算机网络系统为基础的虚拟环境中协同工作,虚拟现实系统的应用十分广泛,几乎可以用于支持任何人类活动和任何应用领域。虚拟现实技术比以前任何人机交互形式都有希望彻底实现以人为中心的人机界面。
更多相关内容 -
qt用户交互界面,大部分控件都用到了
2022-01-26 09:01:32qt用户交互界面,大部分控件都用到了 -
用户交互界面---python-PySimpleGUI库
2021-03-10 15:26:07用户交互界面---python用户交互界面设计注意事项用户交互界面的设计过程关于用户界面的美化 用户交互界面设计注意事项 用户交互界面的设计过程 关于用户界面的美化用户交互界面---python-PySimpleGUI库
前言
PySimpleGUI库的功能非常之多,而且拥有200多个开发示例,很多时候只需要对这些示例稍作修改就可以拿来用了,本文主要介绍了一写PySimpleGUI库中一些宠用的函数,再不借助类似qt这类可视化界面设计的情况下如何快速的做出自己想要的界面,因为篇幅较长,因此大家可以根据目录进行跳转到自己需要的部分。
PySimpleGUI库
PySimpleGUI库介绍
PySimpleGUI是python用于制作用户交互界面的库,使用起来非常方便,官方的默认缩写为sg,因此使用时建议采用import PySimpleGUI as sg语句
PySimpleGUI库安装
如果是在命令行终端输入 pip install pysimplegui即可
如果是在pycharm中,那么可以在file–setting–python interpreter–±-输入PySimpleGUI–install,等待安装完成后即可PySimpleGUI库常用函数
基本弹窗函数popup
popup函数以及其变体
sg.popup(‘基本函数’) sg.popup_ok('带ok键的弹窗') sg.popup_yes_no('带Yes和No按钮的弹窗') sg.popup_cancel('带cancel按钮的弹窗') sg.popup_ok_cancel('带OK和cancel按钮的弹窗') sg.popup_error('带红色error按钮的弹窗') sg.popup_auto_close('几秒后自动关闭的弹窗')
popup函数应用示例
import PySimpleGUI as sg sg.popup( '小白超可爱的',#显示的内容 '小白宇宙第一可爱',#显示的内容 title='嗷呜',#窗口名 button_color=('#000000','#FFFFFF'),#按钮颜色(前景色和背景色) line_width=10,#每一行的字数 custom_text='?',#按键显示内容 location=(857,857),#屏幕显示的位置 auto_close=True,#会自动关闭 auto_close_duration=5,#自动关闭的时间,单位秒 text_color='blue',#文字颜色 grab_anywhere=True,#窗口是否可以移动 font='23',#字体大小 )
文字弹窗函数popup_scrolled
import PySimpleGUI as sg text=''' 今天吃了德芙啊,做了泡芙啊,可还是没有和你一起写代码舒服啊。 ''' sg.popup_scrolled(text,title='写代码是地球ol最好玩的游戏!')
用户输入的弹窗popup_get_text
popup_get_text显示输入内容
import PySimpleGUI as sg text1 = sg.popup_get_text('马师傅说:',title='松果弹抖闪电鞭') print(text1)
popup_get_text不显示输入内容
import PySimpleGUI as sg text1 = sg.popup_get_text('满血鲁班被凯爹一刀秒杀后打字到',#提示内容 title='王者峡谷一条gai',#窗口名称 password_char='*'#用*代替显示) print(text1)
文件选择弹出窗口函数sg.popup_get_file
import PySimpleGUI as sg path=sg.popup_get_file("嘿,siri,打开我的相册", save_as=True,#是否另存为图片 multiple_files=True,#是否可以选择多个文件 file_types=(('图片','.jpg'),)#文件类型 ) print(path)
进度条弹窗函数one_line_progress_meter
import PySimpleGUI as sg for i in range(1000): sg.one_line_progress_meter( '进度条',#窗口名称 i + 1,#当前进度 1000,#总进度 '该进度条key',#内容输出可以是多个字符串 '这是一个进度条', orientation='h',#进度条方向h是横向,v是纵向 bar_color=('#AAFFAA','#FFAAFF'),#进度条颜色 )
进度条上的英文是自动产生的,我目前没有找到消除或者修改内容的方法。主菜单的制作
基本窗口函数window
window函数可以创建一个窗口,在该窗口上可以放置各种各样的控件供我们使用。
top_window = sg.Window('Everything bagel', #展示窗口 layout, #窗口控件布局 finalize=True, #貌似是必要参数 keep_on_top=True, #控件保持在屏幕上方 grab_anywhere=True,#可以拖动窗口 transparent_color=sg.theme_background_color(), #背景主题 no_titlebar=True)#去掉标题栏
PySimpleGUI库常用控件
例程代码
想要掌握window,那么关键在于如何创建和使用控件,以及如何进行函数回调
先来看一下比较便于掌握控件的例程import PySimpleGUI as sg """ Highly experimental demo of how the illusion of a window with a background image is possible with PySimpleGUI. Requires the latest PySimpleGUI from GitHub. Your copy of PySimpleGUI should be local to your application so that the global variable _move_all_windows can be changed. Copyright 2020 PySimpleGUI.org """ sg.Window._move_all_windows = True def title_bar(title, text_color, background_color): """ Creates a "row" that can be added to a layout. This row looks like a titlebar :param title: The "title" to show in the titlebar :type title: str :param text_color: Text color for titlebar :type text_color: str :param background_color: Background color for titlebar :type background_color: str :return: A list of elements (i.e. a "row" for a layout) :rtype: List[sg.Element] """ bc = background_color tc = text_color font = 'Helvetica 12' return [sg.Col([[sg.T(title, text_color=tc, background_color=bc, font=font, grab=True)]], pad=(0, 0), background_color=bc), sg.Col([[sg.T('_', text_color=tc, background_color=bc, enable_events=True, font=font, key='-MINIMIZE-'), sg.Text('❎', text_color=tc, background_color=bc, font=font, enable_events=True, key='Exit')]], element_justification='r', key='-C-', grab=True, pad=(0, 0), background_color=bc)] def main(): background_layout = [ title_bar('This is the titlebar', sg.theme_text_color(), sg.theme_background_color()), [sg.Image(data=background_image)]] window_background = sg.Window('Background', background_layout, no_titlebar=True, finalize=True, margins=(0, 0), element_padding=(0,0), right_click_menu=[[''], ['Exit',]]) window_background['-C-'].expand(True, False, False) # expand the titlebar's rightmost column so that it resizes correctly # ------ Column Definition ------ # column1 = [[sg.Text('Column 1', justification='center', size=(10, 1))], [sg.Spin(values=('Spin Box 1', 'Spin Box 2', 'Spin Box 3'), initial_value='Spin Box 1')], [sg.Spin(values=['Spin Box 1', '2', '3'], initial_value='Spin Box 2')], [sg.Spin(values=('Spin Box 1', '2', '3'), initial_value='Spin Box 3')]] layout = [#控件的设置在这里 [sg.Text('Window + Background Image\nWith tkinter', size=(30, 2), justification='center', font=("Helvetica", 25), relief=sg.RELIEF_RIDGE)], [sg.Text('Here is some text.... and a place to enter text')], [sg.InputText('This is my text')], [sg.Frame(layout=[ [sg.CBox('Checkbox', size=(10, 1)), sg.CBox('My second checkbox!', default=True)], [sg.Radio('My first Radio! ', "RADIO1", default=True, size=(10, 1)), sg.Radio('My second Radio!', "RADIO1")]], title='Options', relief=sg.RELIEF_SUNKEN, tooltip='Use these to set flags')], [sg.MLine(default_text='This is the default Text should you decide not to type anything', size=(35, 3)), sg.MLine(default_text='A second multi-line', size=(35, 3))], [sg.Combo(('Combobox 1', 'Combobox 2'),default_value='Combobox 1', size=(20, 1)), sg.Slider(range=(1, 100), orientation='h', size=(34, 20), default_value=85)], [sg.OptionMenu(('Menu Option 1', 'Menu Option 2', 'Menu Option 3'))], [sg.Listbox(values=('Listbox 1', 'Listbox 2', 'Listbox 3'), size=(30, 3)), sg.Frame('Labelled Group', [[ sg.Slider(range=(1, 100), orientation='v', size=(5, 20), default_value=25, tick_interval=25), sg.Slider(range=(1, 100), orientation='v', size=(5, 20), default_value=75), sg.Slider(range=(1, 100), orientation='v', size=(5, 20), default_value=10), sg.Col(column1)]]) ], [sg.Text('_' * 80)], [sg.Text('Choose A Folder', size=(35, 1))], [sg.Text('Your Folder', size=(15, 1), justification='right'), sg.InputText('Default Folder'), sg.FolderBrowse()], [sg.Submit(tooltip='Click to submit this form'), sg.Cancel()], [sg.Text('Right Click To Exit', size=(30, 1), justification='center', font=("Helvetica", 25), relief=sg.RELIEF_SUNKEN)], ] #只要把layout传递给window函数就可以让窗口搭载设定好的控件了 top_window = sg.Window('Everything bagel', layout, finalize=True, keep_on_top=True, grab_anywhere=False, transparent_color=sg.theme_background_color(), no_titlebar=True) # window_background.send_to_back() # top_window.bring_to_front() while True: window, event, values = sg.read_all_windows() print(event, values) if event is None or event == 'Cancel' or event == 'Exit': print(f'closing window = {window.Title}') break top_window.close() window_background.close() if __name__ == '__main__': background_image = 图片的URL #链接太长了就不贴了,需要的话自己去找一下图片,也可以用本地图片但是只支持gif格式的图片 main()
Frame控件
sg.Frame()里面可以穿插其他控件,在同一个sg.Frame控件里的控件会被框起来代表是一组,比较常用语里面插入选择性的控件,主要参数有
- tooltip:提示信息,鼠标放置在控件上会出现提示
- title:标题
[sg.Frame(layout=[ [sg.CBox('Checkbox', size=(10, 1)), sg.CBox('My second checkbox!', default=True)], [sg.Radio('My first Radio! ', "RADIO1", default=True, size=(10, 1)), sg.Radio('My second Radio!', "RADIO1")]], title='Options', relief=sg.RELIEF_SUNKEN, tooltip='Use these to set flags')]
Text控件:文本
sg.Text()里面可以插入文本内容,并显示在窗口上,是很常用的控件类型,主要参数有
- size:文本框大小
- justification:文字位置
- font:字体型号以及字体大小
sg.Text('Your Folder', size=(15, 1), justification='right')
Image控件:图片
sg.Image控件可以用来植入图片或者动态图,但是只支持gif格式和png格式,其他格式的图片需要转化成这俩种格式,不过我测试只有gif可用,常用的参数有
- size:图片大小,比图片大的话不会被放大填充,但是比图片小的话图片会被缩放
附上其他类型图片转化为gif图片的源码:
picref = Image.open(picref_path) picrefNew.append(picref) picrefNew[0].save("./picref.gif", 'gif', save_all=True, append_images=picrefNew[1:])
Button控件:按键
sg.Button控件可以创造一个按键,用户每当按下按键,则会返回所有当前所有选择框的状态,从而便于让开发者去调用对应的响应函数,在PySimpleGUI库中,有很多奇奇怪怪的按键函数,但实际上只是换了名字而已,与sg.Button并没有什么额外的内容。
- OK
- Ok
- Submit
- Cancel
- Yes
- No
- Exit
- Quit
- Help
- Save
- SaveAs
- Open
sg.OK()就相当于sg.Button(‘OK’),Button的主要参数有 - size:按键大小
- key:传入一个字符串,代表键值
sg.Button('评估',size=(30,1),key='assess')
Radio控件:单项选择
一组sg.Radio同时只有一个控件可以被选择,可以用作单项选择或者确定是否,主要参数有
- default:初始是否被选中
- size:尺寸大小
sg.Radio('My first Radio! ', "RADIO1", default=True, size=(10, 1))
Slider控件:滑块调节
sg.Slider()可以产生一个可滑动调节的按钮,主要的参数有
- range:可滑动范围,例如(1,100)
- size:尺寸大小
- default_value:默认滑块所在的位置
sg.Slider(range=(1, 100), orientation='h', size=(34, 20), default_value=85)
Listbox控件:列表框
listbox可以创建一个列表框供人选择,在触发回调事件时,列表框被选中的情况会被返回
sg.Listbox(values=('Listbox 1', 'Listbox 2', 'Listbox 3'), size=(30, 3))
Cbox控件:复选框
Cbox函数可以用来创建复选框,复选框可以有多个控件被同时选择,主要参数:
- default:默认值为False,决定初始化后是否被选择
- size:控件大小
[sg.CBox('Checkbox', size=(10, 1)), sg.CBox('My second checkbox!', default=True)]
Combo控件:下拉选框
Combo用于生成下拉选框,当有回调事件触发时会返回选框内的值,主要参数:
size:控件大小
default:默认选择哪个值sg.Combo(('Combobox 1', 'Combobox 2'), default_value='Combobox 1', size=(20, 1))
FileBrowse控件:选取文件
FileBrowse常用于打开一个文件,但是该函数不会触发按键效果,所以就会出现用该函数打开了一个文件后却不可以即使更新到界面上,也无法触发其他回调函数,但是可以通过以下语句更新到文本框中
layout=[sg.Text('源图像', size=(8, 1)),sg.Input(),sg.FileBrowse('选择源图像', size=(30, 1))]
FolderBrowse控件:选取文件夹
和FileBrowse没有什么区别,不过对象从文件变成了文件夹,也一样不会触发回调,但是可以更新到文本框当中
layout=[sg.Text('源图像', size=(8, 1)),sg.Input(),sg.FolderBrowse('选择源图像', size=(30, 1))]
Table:列表
Table函数可以生成一个列表将需要展示的数据展示出来是很好用的函数
[sg.Table(values=[[" ", " ", " ", " "," "]],#列的初始宽度 headings=['算法名称', '评估分数', '算法最高分', '归一化后分数','综合权值'],#列头的初始值 max_col_width=500,#行宽 auto_size_columns=True, # 自动调整列宽(根据上面第一次的values默认值为准,update时不会调整) display_row_numbers=True, # 序号 justification='center', # 字符排列 left right center num_rows=7, # 行数 row_height=30, # 行高 key='_table_',#键值 font=('微软雅黑', 12),#字体大小和字体类型 text_color='black',#文本颜色 background_color='white',#背景颜色 enable_events=True, bind_return_key=True, tooltip='仿真评估表')],]#文本提示
用户交互界面设计注意事项
- 为了保证用户界面使用的流畅性,要给界面处理单开一个线程,保证其实时性流畅性
- 该库的背景板一般是单独的窗口,但如果不将其设为置顶,只要有其他软件在其上面就会被覆盖导致背景看不见,但如果设为置顶,则只要碰到控件窗口以外的地方,则控件窗口会被背景窗口覆盖,目前没有一个很好解决方法
- 如果控件窗口设定为置顶,则弹窗可能会被覆盖,需要将弹窗也设定为置顶。
关于用户界面的美化
对于一名非颜值主义者,五官跟着三观走的人来说没有什么很好的美术设计功底与概念
简单来说:我不会作美化 -
简单用户交互界面
2017-07-18 10:33:47源码解释在博客。js实现用户交互 -
C#3.0面向对象编程八用户交互界面一.ppt
2020-11-18 00:02:47C#3.0面向对象编程八用户交互界面一.ppt -
开源的单击和复制用户交互界面
2019-08-08 04:46:24开源的单击和复制用户交互界面 -
人机交互界面设计
2021-03-19 20:54:15介绍了关于人机交互界面设计的详细说明,提供其它HMI人机界面的技术资料的下载。 -
终于知道交互界面设计是什么
2021-06-18 06:37:18下面给大家讲讲交互界面设计是什么,感兴趣的不妨往下看看吧!ui交互界面设计是人机交互领域的一个重要课题。人机交互设计本质上是设计协调者与计算机之间的矛盾,是以最有效的方式满足人的安全、高效、舒适的学科。...现在,移动设备很多,传输的信息量也很大。设计师需要精简复杂和冗余的元素,使信息对用户更加直观和清晰。下面给大家讲讲交互界面设计是什么,感兴趣的不妨往下看看吧!
ui交互界面设计是人机交互领域的一个重要课题。人机交互设计本质上是设计协调者与计算机之间的矛盾,是以最有效的方式满足人的安全、高效、舒适的学科。用户界面根据其工作流程可分为输入和输出。输入是指一个人如何将他的需求或愿望告诉计算机,而输出是指计算机如何向用户传达它的计算和需要。
颜色
易于识别的文本、和谐的色块和易用性的按钮创建了一个舒适的环境。色彩搭配应针对不同用户群体的心理。不同的配色方案具有不同的情感特征,会对人的心理状态和视觉体验产生不同的影响。颜色类型不应该太多。基于视觉分析,颜色匹配会降低阅读速度。
文本
文本是界面的一个极其重要的部分,文本传达了大量的微观信息。字字相连可以成为文本,成组可以成为图形或符号。例如,在150dpi-300dpi高分辨率的印刷品中,正文字体主要使用有衬线的宋体。显示器的72dpi低分辨率通常用都用黑体或者微软雅黑。如果正文改成宋体,文字衬线会阻碍阅读,会导致视觉疲劳。
图标
图标分为标记和按钮,用户可以通过形状和颜色清楚地了解操作界面中信息和图标的分类。用户经常使用的工具栏图标和下拉菜单需要与文本信息相结合。图标除了具有功能价值外,在传递品牌属性方面也起到了推广的作用。
设计中首先要考虑的是用户如何交互,而不是技术问题。如何使软件界面更加美观、易于操作,首先可以对这些相关的视觉元素进行分类和分析设计。界面设计通常包括布局、交互级别和视觉等元素。这些要素的运用不仅能准确传达信息,而且能定位每个用户的心理,正确引导用户继续关注和使用。
界面布局是在有限的屏幕空间内科学合理地安排一定数量的信息。例如,最重要的元素应该放在其他元素的上面或左边。视觉元素应在固定位置摆放信息与图形按钮。随着硬件设备的进步,移动互联网已经朝着低配置、高性能、个性化和高质量用户体验的方向发展。目前,通过成功的例子,扁平的交互界面比其他风格的界面更容易处理,首先是字面上的“扁平化”,然后是相应的“结构层次”。
一个好的设计任务就是建立在结构“扁平化”的基础上,即降低有效信息的层次,精简结构,直观的功能表达等都是扁平化交互的手段。减少层级结构,减少交互步骤,无疑提高了用户的使用效率。
以智能手机界面快捷菜单为例。在任何界面上,你都可以通过滑动手指从底部设置快捷菜单,还可以设置蓝牙和震动功能。对于一个新用户来说,如何在新界面中进行简单的操作是一个值得我们研究的课题。
现在,移动设备很多,传输的信息量也很大。设计师需要精简复杂和冗余的元素,使信息对用户更加直观和清晰。我们应该对产品的主要功能结构进行分类。虽然分类并不能降低产品的易用性,但是它可以帮助用户分析产品,这有助于在互联网上组织大量的信息,使用户能够快速找到他们想要的信息。
视觉设计在品牌和用户体验中起着推动作用。优秀的设计作品简洁明了,功能准确。好的字体在设计中也起到了点明主题的作用。用户界面的设计不应轻视审美因素,视觉设计也不应只是简单的涂鸦。它可以有很多细节,也可以表达纹理和动态。这需要设计者去发现的。
-
采用MFC开发用户交互界面的新方法.pdf
2012-05-25 10:26:42采用MFC开发用户交互界面的新方法.pdf -
人机交互(HCI)中的多通道用户界面技术详解
2021-07-07 14:18:30由于多通道交互中各个面道不再局限于精确输入,因此,如何从多个并行、非精确的交互通道中获取用户要传达的信息,就成为多通道用户界面技术立该解决的主要问题,即多通道整合问题。目前,有关多通道整合的研究主要... -
MATLAB GUI创建图形用户界面/交互界面
2020-05-20 01:04:54目标:根据自己写的函数,写一个交互式界面。 操作步骤 第一步:命令窗口输入guide,得到 “.fig” 和 “.m” 文件 第二步: 参考资料 [1]Matlab GUI界面设计目录
第一步:命令窗口输入guide,得到 “.fig” 和 “.m” 文件
目标:根据自己写的函数,写一个交互式界面。
其实整体较简单,关键是理解整个MATLAB GUI 运行的逻辑!
PS 一切将简单问题复杂化的东西,真的可恨!
第一步:命令窗口输入guide,得到 “.fig” 和 “.m” 文件
第二步:设计界面
第三步:编写界面中元素对应代码
上述界面框对应的代码如下:
%%%%%%%%%%%%%%%%%%%%%%%%%%% 主函数 %%%%%%%%%%%%%%%%%%%%%%%%%% function varargout = Example_test(varargin) % EXAMPLE_TEST MATLAB code for Example_test.fig % EXAMPLE_TEST, by itself, creates a new EXAMPLE_TEST or raises the existing % singleton*. % % H = EXAMPLE_TEST returns the handle to a new EXAMPLE_TEST or the handle to % the existing singleton*. % % EXAMPLE_TEST('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in EXAMPLE_TEST.M with the given input arguments. % % EXAMPLE_TEST('Property','Value',...) creates a new EXAMPLE_TEST or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before Example_test_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to Example_test_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help Example_test % Last Modified by GUIDE v2.5 07-Aug-2020 15:16:01 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @Example_test_OpeningFcn, ... 'gui_OutputFcn', @Example_test_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT %%%%%%%%%%%%%%%%%%%%%%%%%%% openingfucntion %%%%%%%%%%%%%%%%%%%%%%%%%% % --- Executes just before Example_test is made visible. function Example_test_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to Example_test (see VARARGIN) % Choose default command line output for Example_test handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes Example_test wait for user response (see UIRESUME) % uiwait(handles.figure1); %%%%%%%%%%%%%%%%%%%%%%%%%%% output function %%%%%%%%%%%%%%%%%%%%%%%%%% % --- Outputs from this function are returned to the command line. function varargout = Example_test_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; %%%%%%%%%%%%%%%%%%%%%%%%%%% 编辑文本1 %%%%%%%%%%%%%%%%%%%%%%%%%% function edit1_Callback(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit1 as text % str2double(get(hObject,'String')) returns contents of edit1 as a double % --- Executes during object creation, after setting all properties. function edit1_CreateFcn(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end %%%%%%%%%%%%%%%%%%%%%%%%%%% 编辑文本2 %%%%%%%%%%%%%%%%%%%%%%%%%% function edit2_Callback(hObject, eventdata, handles) % hObject handle to edit2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit2 as text % str2double(get(hObject,'String')) returns contents of edit2 as a double % --- Executes during object creation, after setting all properties. function edit2_CreateFcn(hObject, eventdata, handles) % hObject handle to edit2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end %%%%%%%%%%%%%%%%%%%%%%%%%%% 按钮1 %%%%%%%%%%%%%%%%%%%%%%%%%% % --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) [Filename, Pathname]=uigetfile('*.txt;*.xlsx','Select Input Ground Motion'); % Raw download PEER data file=[Pathname,Filename]; data=importdata(file); handles.data=data; % 不同子函数之间进行数据传输 axes(handles.axes1); plot(data,'k','linewidth',1,'Color',[0.7 0.7 0.7]); guidata(hObject,handles) %%%%%%%%%%%%%%%%%%%%%%%%%%% 按钮2 %%%%%%%%%%%%%%%%%%%%%%%%%% % --- Executes on button press in pushbutton2. function pushbutton2_Callback(hObject, eventdata, handles) % hObject handle to pushbutton2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) thres=get(handles.edit1,'string'); thres=str2double(thres); data=handles.data; data=data(data>thres); axes(handles.axes2); plot(data,'k','linewidth',1,'Color',[0.7 0.7 0.7]); %%%%%%%%%%%%%%%%%%%%%%%%%%% 将结果写入 编辑文档2 %%%%%%%%%%%%%%%%%%%%%%%%%% S=data(1:2,1); C=num2str(S'); % 行向量! set(handles.edit2,'String',C)
主要注意如下几点:
(1)核心是写“按钮”和“可编辑文档”对应的callback部分,其他(如主函数,opening function, output function)不需要动!
(2)了解不同子函数间数据是如何传递的,本文中采用的代码如下,其他方式详见Matlab的GUI参数传递方式总结。
data=importdata(file); handles.data=data; % 不同子函数之间进行数据传输 guidata(hObject,handles) % 在子函数最后,一定要加上这句!
(3)如何画图,本文采用的代码如下:
axes(handles.axes1); plot(data,'k','linewidth',1,'Color',[0.7 0.7 0.7]);
(4)如何清空图形和“可编辑文本”内的文字,代码如下
function pushbutton3_Callback(hObject, eventdata, handles) % hObject handle to pushbutton3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) try delete(allchild(handles.axes1)); end set(handles.edit1,'String','');
(5)理解“get函数”和“set函数”在GUI中的意义!
(6)一个文本框内放入向量,思路是将向量变成字符串,注意得是行向量!
S=data(1:2,1); C=num2str(S'); % 行向量! set(handles.edit2,'String',C)
第四步 结果
参考资料
[1] Matlab GUI界面设计
[2] matlab GUI界面编程总结
[3] matlab编程GUI基础
-
matlab 交互界面设计
2021-08-03 21:55:571、回调函数没报错直接退出一般是由于函数当中有clear命令,删除了交互界面handle 2、多界面和标签页可以通过面板实现,设置面板的visible属性即可 3、动画卡顿可以通过设置属性值实现快速刷新 ... -
【UEFI实战】UEFI用户交互界面基础说明
2018-03-30 23:37:28【UEFI实战】UEFI用户交互界面基础说明。 -
用户界面设计--有效的人机交互策略
2016-08-09 12:40:44用户界面设计--有效的人机交互策略 -
基于用户体验的APP交互界面动画设计研究.pdf
2021-08-26 23:23:59基于用户体验的APP交互界面动画设计研究.pdf -
如何用python做一个简单的输入输出交互界面?
2021-10-14 07:13:39时间成本太高了,更何况服务器又是一笔成本,后期可能还得不断维护所以最好的方式就是直接做成界面化的GUI,然后转成exe,直接发给对方就可以应用,从时间成本上计算这种方案最划算而且也不用担心收益,在界面化里插... -
一文解读:什么是用户界面设计?
2021-06-18 06:37:15目前对于用户界面定义比较广泛,不仅仅包含人与机器交互的图形用户接口,广义来说用户界面是用户和系统进行交互方法的集合,这些系统不是单单指电脑程序,还包括某种特定的机器、设备、复杂的工具等。用户界面可以... -
消费电子中的智能手机创新交互界面的设计
2020-10-22 05:53:32在现有技术条件下如何处理终端设备移动性和交互操控的易用性之间的矛盾,并准确掌握用户在不同环境中的界面应用方式,将是独立于桌面和膝上计算设备界面人机交互方面的崭新探索领域。 1 现有智能手机信息交互的... -
【UEFI实战】UEFI用户交互界面使用说明之基础驱动
2018-08-21 20:26:45【UEFI实战】UEFI用户交互界面使用说明之基础驱动。 -
基于用户交互体验的电动汽车仪表盘交互界面设计.pdf
2021-09-04 14:39:25基于用户交互体验的电动汽车仪表盘交互界面设计.pdf -
怎么设计制作简洁实用的App交互界面
2020-10-21 18:10:17怎么设计制作简洁实用的App交互界面?在我们制作界面的时候经常会看到网上有很多的绚丽的界面他们的图形都非常炫酷。如何才能快速的制作出这样效果呢? 那么今天兔课菌教大家如何使用2步方法制作炫酷的APP界面。 ... -
常见的交互式命令行用户界面的集合。-Node.js开发
2021-05-27 09:15:57Inquirer.js常见的交互式命令行用户界面的集合。 目录文档安装示例方法对象问题答案分隔符Inquirer.js常见的交互式命令行用户界面的集合。 目录文档安装示例方法对象问题答案分隔符提示类型用户界面和布局React性... -
Windows服务编写(Windows Service,system权限)程序显示界面与用户交互(xp,win7通用)
2020-09-02 12:18:59主要介绍了Windows服务编写Windows Service,system权限程序显示界面与用户交互(xp,win7通用) ,需要的朋友可以参考下 -
人机交互Web界面设计文档(含界面图片)
2015-10-16 10:09:52人机交互Web界面设计文档(含界面图片) -
虚拟仪器人机交互界面设计.zip
2019-11-16 23:40:07虚拟仪器人机交互界面设计,用户登录界面,时间结构实现动态窗口,自定义菜单。虚拟仪器实验人机交互设计 -
Python的交互式界面 编写 .
2018-08-16 14:47:52Python的交互式界面 编写 . 1 from tkinter import * 2 # 导入tkinter模块的所有内容 3 4 root = Tk() 5 6 # 创建一个文本Label对象 7 textLabel = Label(root, # 将内容绑定在 root ... -
数码产品人机交互界面设计思路分享
2021-07-07 08:52:36人机交互界面是人使用数码产品所要达到的最终期望,是一件产品展现自身价值和满足用户相关要求的途径,是产品和人之间沟通的桥梁,是产品自己推销自己的一大特色。界面是多种信息的储存库,是信息转化、分析、传递... -
论文研究-基于用户认知能力的自助服务终端界面交互设计方法.pdf
2019-07-22 20:13:34大众用户认知能力的多样性问题一直是自助服务终端界面交互设计领域的一大挑战。基于分布式认知理论对自助服务终端界面交互活动进行分析和建模, 确定人机交互过程中交互活动和信息呈现之间的关系, 并在此基础上提出... -
QT人机交互(动态界面)
2020-11-23 00:03:13QT简单的人机交互界面设计 人机交互-----用户能够与界面进行动态交互 信号和槽:当一个事件发生时,那么一个对应的信号会触发,如果与该信号已建立的连接的槽函数它就会被自动调用。自定义信号并建立连接,槽函数... -
用于创建用户界面和用户交互的应用模板-Swift开发
2021-05-27 07:14:25用于创建用户界面和用户交互的应用模板ArlanUIApp描述iPhone上用于创建用户界面和用户交互的应用模板可用的小组件