GUI实践-为窗口添加菜单条和工具条
GUI(用户图形界面)

03
减少了程序中的循环和延时操作,提高了 程序的执行效率。
04
方便实现复杂的交互逻辑和动态界面效果。
多任务和多线程
01
并行处理
02 支持多个任务同时运行和处理,提高了程序的并 发性能和响应速度。
03 可以将耗时的任务放在后台线程中执行,避免阻 塞主线程和影响用户体验。
多任务和多线程
• 提供了线程同步和互斥机制,避免多线程并发访问导致的 数据竞争和死锁问题。
重要性
GUI为用户提供了一种直观、易用的操作方式,使得计算机的使用变得更加便捷 和高效。GUI能够降低用户的学习成本,提高工作效率,并增强用户体验。
GUI的历史和发展
历史
GUI的概念起源于20世纪60年代,最早的图形用户界面是SGI公司为斯坦福大学开发的斯坦福大学图形界面 (Stanford Graphics Interface)。随着计算机技术的不断发展,GUI逐渐成为计算机操作系统和应用程序的标 准界面。
娱乐软件
娱乐软件是一类用于休闲和放松的软件,如 音乐播放器、视频播放器等。GUI在娱乐软 件中扮演着重要的角色,提供了简洁、易用 的界面,使用户能够轻松地享受娱乐内容。
嵌入式系统和专用设备
嵌入式系统
嵌入式系统是一类专用的计算机系统,通常 用于控制和管理特定的硬件设备。GUI在嵌 入式系统中起着重要的作用,提供了直观、 易用的界面,使用户能够方便地与设备进行 交互和控制。
错误处理与提示
GUI应具备完善的错误处 理机制和友好的提示信息, 帮助用户快速解决问题。
适应性与兼容性
GUI应具备良好的适应性 与兼容性,支持不同设备 和浏览器的使用,确保用 户体验的一致性。
美观性原则
视觉层次与布局
WinForm窗体菜单和工具栏

WinForm窗体菜单和⼯具栏1.ContextMenuStrip右键菜单控件/窗体属性中的⾏为属性中ContextMenuStrip来进⾏选择使⽤2.MenuStrip可以⾃⼰编辑的的菜单栏每⼀个选项都有⾃⼰的属性属性中外观属性Image设置每个选项前⾯的⼩图标"-"作为分割线,也可以右键选择插⼊,⾥⾯也有分割线右键插⼊标准项,可以插⼊程序⾃带的模板,减少编辑时间选中某个选项,找到属性中的ShortCutKey来实现编辑这个选项的快捷键菜单栏右边还有个⼩箭头.也可选择添加ComBox下拉菜单,和TextBox⽂本框3.StatusStrip底部状态栏StatusLabel可以添加图标,⽂字,和Label⼀样ProgressBar可以添加进度条DropDownButton下拉菜单,点击图⽚也能下拉SplitButton下拉菜单,点击图⽚不能下拉,只能点击箭头下拉4.ToolStrip⼯具栏控件为⾼度可配置的、可扩展的控件,它提供了许多属性、⽅法和事件,可⽤来⾃定义外观和⾏为,可与ToolStripContainer配合使⽤,⽤户可⾃⾏调整位置 Dock 获取或设置 ToolStrip 停靠在⽗容器的哪⼀边缘。
AllowItemReorder 获取或设置⼀个值,让该值指⽰拖放和项重新排序是否专门由 ToolStrip 类进⾏处理。
LayoutStyle 获取或设置⼀个值,让该值指⽰ ToolStrip 如何对其项进⾏布局。
Overflow 获取或设置是将 ToolStripItem 附加到 ToolStrip,附加到 ToolStripOverflowButton,还是让它在这两者之间浮动。
IsDropDown 获取⼀个值,该值指⽰单击 ToolStripItem 时,ToolStripItem 是否显⽰下拉列表中的其他项。
OverflowButton 获取 ToolStripItem,它是启⽤了溢出的 ToolStrip 的“溢出”按钮。
教学课件第9章菜单和工具栏

显示弹出式菜单
• PopupMenu方法
格式:
[对象名.]PopupMenu 主菜单项名 “对象名”是弹出式菜单的窗体名。
“对象名”省略时代表当前窗体。 其功能是在窗体的鼠标所在位置显示弹出
式菜单。
弹出式菜单示例
【例】为上例增加弹出式菜单,当用户用鼠标右键单击窗体 时,显示字体效果菜单。
使用ImageList控件管理按钮图片
• 在“关键字”中的字符串是每个图像唯一的 名称,访问某个图像既可以使用图像的索引 号,也可以使用关键字(便于记忆);
ToolBar与ImageList建立关联
Toolbar控件只有与ImageList关联后,才 能使用其中的图像。有两种方法:
• Toolbar 控件的“属性页”中的“图象列表” 组合框列出了窗体中所有的ImageList控件名 称,选中需要的那个ImageList控件
• 对于剪切和复制菜单来说,应该根据文本框中 是否有文本被选择来决定菜单是否生效,该功 能 由 子 程 序 SetEnabledValue 来 负 责 。 在 按 下 编辑菜单时决定子菜单的有效性。
' 按下编辑菜单
Private Sub mnuEdit_Click() ' 设置剪切和复制菜单的有效性 If Text1.SelLength <> 0 Then '判断是否有选择文本
' 粗体菜单被按下
Private Sub mnuFontBold_Click()
PrmivnauteFsounbtBmolndu.Cfohnetcuknedde=rliNneo_t cmlincku(F)ontBold.Checked
教学课件第12章图形用户界面GUI

12 2 4 设置GUI及控件属性
• 在完成控件的添加后,用户还要根据需要,对应 各控件的功能和所起的作用,给各控件设置属性。 在本例的GUI中,共有4种不同类型的控件,分别 是Axes、Static Text、Edit Text和Push Botton, 本小节将分别设置它们的若干属性。
12.2.5 确定“标签”属性
12.2 在GUIDE中创建GUI
• 上一节已经介绍过,在GUIDE中,创建GUI是设计GUI的方式之 一,GUIDE是MATLAB提供的用来开发GUI的专用环境,全称为 Graphical User Interface development environment,其主 要包含一个界面设计工具集(Layout editor),MATLAB在其 中集中了所有GUI支持的用户控件,并且允许设计者对界面的 外观、属性和行为响应方法进行设置。
• 为了让读者更加直观地感受到本例的效果,首先把最终需要生成 的GUI呈现给读者,如图所示。
12.2.2 GUI编辑界面的控件布局
• 在上一小节中创建的GUI编辑界面的左侧,读者可以看到一系列用 户控件,表列出了控件的图标、名称和功能。
12.2.3 在GUI中添加控件
• 在上一小节的基础上(选择界面显示控件图标), 针对例子的要求,为GUI添加必要的控件。
• M-文件:用于存储GUI初始化和回调函数两部分,并不包含用 户编写的代码。用户控键的回调函数根据具体交互操作来分别 调用。
12.2.1 在MATLAB中启动GUIDE
第五章菜单工具栏状态栏和对话框

11. 显示窗口列表(Window List)检查框:
决定是否显示所有打开的子窗体标题。
对MDI窗体和MDI子窗体有效,对普通窗体无效。
5.1 菜单设计
3.菜单设计的几项操作:
(1).设计下拉菜单 (2).设计子菜单或改变子菜单级别 (3).为菜单项分组
菜单名用减号“-” (4).为菜单项指定访问键和快捷键
5.4.2 通用对话框
三、通用对话框使用---打开/另存为对话框
属性
4.InitDir(初始化路径)属性:该属性用来指定打开对话框 中的初始目录,若不设置,系统则默认为“C:\My Documents\”。
sbrScrl
4
Scroll Lock 键。当激活滚动锁定时,用黑体显示字母 SCRL,反之,当停用滚动键时, 显示暗淡的字母。
sbrTime 5 Time。以系统格式显示当前时间。
sbrDate 6 Date。以系统格式显示当前日期。
5.3 状态栏(StatusBa源自 控件)3.状态栏事件响应及显示信息修改
2. 在ToolBar控件中添加按钮 (1)ToolBar控件
ToolBar控件包含一个按钮对象集合,该对象被用来创 建与应用程序相关联的工具栏。工具栏包含一些按钮,这 些按钮与应用程序菜单中各项的按钮对应,工具栏为用户 访问应用程序的最常用功能和命令提供了图形接口。
(2)为工具栏连接按钮 右键单击Toolbar控件,选择“属性”命令打开如图2所
False(缺省):选择“取消”按钮,没有错误警告。
2、 通用对话框的方法
除了Acton属性,VB还提供了一组方法用来打开不同类型对话框
ShowOpen
ShowSave ShowColor
FreeCAD二次开发-创建Python工作台,添加菜单栏和工具条,FreeCAD命令

FreeCAD⼆次开发-创建Python⼯作台,添加菜单栏和⼯具条,FreeCAD命令FreeCAD作为⼀款基于OpenCasCAD内核的开源CAD软件,可以在GitHub上下载源代码。
阅读源代码,有助于我们学习CAD软件架构,了解底层⼏何算法。
由博主Caesar卢尚宇⾃学整理(纯粹出于对三维CAD软件开发的热爱)可以把FreeCAD理解成⼀个QT界⾯的容器,每次FreeCAD启动时都去Mod⽂件夹⾥读取所有⼯作台。
我们在Mod⾥添加⾃⼰的⼯作台⽂件夹,⾥⾯放三个⽂件。
Init.py这个是FreeCAD启动的时候执⾏的,不与界⾯交互的,后台执⾏。
(⼀般做界⾯⼯具开发,这个⽂件为空就⾏了)InitGui.py这个是FreeCAD启动的时候执⾏的,与界⾯交互的代码。
LSY.py这个是我们存放命令功能的⽂件。
InitGui.pyclass MyWorkbench ( Workbench ):MenuText = "My Workbench1"ToolTip = "A description of my workbench"Icon = """paste here the contents of a 16x16 xpm icon"""def Initialize(self):"""This function is executed when FreeCAD starts"""import LSY # import here all the needed files that create your FreeCAD commandsself.list = ['MySecondCommand', 'MySecondCommand1'] # A list of command names created in the line aboveself.appendToolbar('My Commands',self.list) # creates a new toolbar with your commandsself.appendMenu('My New Menu',self.list) # creates a new menuself.appendMenu(["An existing Menu", "My submenu"], self.list) # appends a submenu to an existing menudef Activated(self):"""This function is executed when the workbench is activated"""returndef Deactivated(self):"""This function is executed when the workbench is deactivated"""returndef ContextMenu(self, recipient):"""This is executed whenever the user right-clicks on screen"""# "recipient" will be either "view" or "tree"self.appendContextMenu("My commands", self.list) # add commands to the context menudef GetClassName(self):# this function is mandatory if this is a full python workbenchreturn"Gui::PythonWorkbench"Gui.addWorkbench(MyWorkbench())Caesar卢尚宇2020年3⽉24⽇LSY.pyimport FreeCADimport FreeCADGuifrom PySide import QtGui, QtCoreclass MySecondCommand:def GetResources(self):return {'Pixmap': 'freecad', 'MenuText': 'show Message1', 'ToolTip': 'Print show Message1'}def Activated(self): #点击按钮执⾏的动作"""Do something here"""reply = rmation(None,"","Houston, we have a problem")returndef IsActive(self):"""Here you can define if the command must be active or not (greyed) if certain conditionsare met or not. This function is optional."""return TrueFreeCADGui.addCommand('MySecondCommand', MySecondCommand())class MySecondCommand1:def GetResources(self):return {'Pixmap': 'freecad', 'MenuText': 'show Message2', 'ToolTip': 'Print show Message2'}def Activated(self): #点击按钮执⾏的动作"""Do something here"""reply = QtGui.QMessageBox.question(None, "", "This is your chance to answer, what do you think?",QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.No) if reply == QtGui.QMessageBox.Yes:# this is where the code relevant to a 'Yes' answer goespassif reply == QtGui.QMessageBox.No:# this is where the code relevant to a 'No' answer goespassreturndef IsActive(self):"""Here you can define if the command must be active or not (greyed) if certain conditionsare met or not. This function is optional."""return TrueFreeCADGui.addCommand('MySecondCommand1', MySecondCommand1())Caesar卢尚宇2020年3⽉24⽇这两个⽂件⾥的代码,也是从社区⾥找到的。
GUI的基础知识总结

图形用户界而GUI (Graph i cal User Interfaces)就是一种用户与计算机进行信息交流得工具与方法川I各种图形对象组成,在这种用户界而卜;用户得命令与对程序得控制就是通过鼠标等输入设备''选择"各种图形对象来实现得。
软件开发者只需在曲软件开发工具门动生成得程庠代码中添加门己得运算或控制代码,就町以完成应用程序得设计。
□前90%以上得应用程序与软件都就足在GUI卜•运行得。
血MATLA B有两种GUI用户界面控件得创建方式,基丁命令行得编程方式制作与基丁•MAT LAB提供得图形用户界面开发坏境GUIDE中得图形用户界而开发工具得GUI创建方式制作.这里主要介绍基r- GUIDE得创建方式。
在GUI得设计中应注意在面板上进行按钮得静态布S时一宦要事先预算好按钮得个数.更重耍得一点就是如果您放冒了1个按钮井且对此按钮得屈性进行了某种操作,那么该按钮得痕迹将永远保存在您所建得而板上,您将该按钮删除,然后重新建一个按钮,并将其屈性值设置与上一个按钮一模一样,那并不能保证您将上一按钮覆盖,在程序进行运行得过程中它只会识别上一按钮(已经删除得按钮),而您将上一按诳得删除则造成程序运行中得错误或就是得不到您预想得界面效果,为了避免这种情况,在进行设计得时候对任一按钮屈性得设置不要与己经剧除按钮得屈性相同.Matla b为GUI设计一共准备了4种模板,分别就是:^BlankGUI(Default)(空白模板,默认): ©GUI with Uicontrols (带控件对象得GUI 模板);bGUIwith Axes and M e n u (带坐标轴与菜单得GUI模板);^Modal Quest! o n D i a 1 og (带模式问题对站框得GUI模板)。
並肖用户选择不同得模板时,在G UI设计模板界面得右边就会显示出与该模板对应得GUI图形。
在GUI设计模板中选中一个模板,然后单击OK按钮,就会显示GUI设计窗口。
VBA实现自定义菜单与工具栏的步骤与技巧

VBA实现自定义菜单与工具栏的步骤与技巧自定义菜单和工具栏是VBA中非常有用的功能,能够提供更加灵活和高效的用户界面。
通过自定义菜单和工具栏,我们可以根据自己的需求添加或删除菜单项和工具按钮,使得用户能够方便地访问所需的功能。
本文将介绍如何使用VBA实现自定义菜单与工具栏的步骤与技巧。
一、创建自定义菜单要创建自定义菜单,首先需要打开Visual Basic编辑器(VBE),然后按下ALT+F11快捷键。
在VBE中,选择“插入” -> “用户窗体”或者右键单击项目资源管理器中的该工作簿并选择“插入模块”。
在新的用户窗体或模块中,输入以下代码,以创建一个名为"CustomMenu"的自定义菜单。
```vbaSub CreateCustomMenu()Dim cBar As CommandBarDim cBarControl As CommandBarControl' 如果已经存在名称为"CustomMenu"的菜单,则删除它On Error Resume NextmandBars("CustomMenu").DeleteOn Error GoTo 0' 创建自定义菜单Set cBar = mandBars.Add(Name:="CustomMenu", Position:=msoBarPopup, _MenuBar:=False, Temporary:=True)' 添加菜单项Set cBarControl = cBar.Controls.Add(Type:=msoControlButton)With cBarControl.Caption = "菜单项1".OnAction = "Macro1"End WithSet cBarControl = cBar.Controls.Add(Type:=msoControlButton)With cBarControl.BeginGroup = True.Caption = "菜单项2".OnAction = "Macro2"End WithEnd SubSub Macro1()' 菜单项1的宏代码End SubSub Macro2()' 菜单项2的宏代码End Sub```在创建的自定义菜单中,我们通过`CommandBar`对象和`CommandBarControl`对象来创建和添加菜单项。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实践——为窗口添加菜单条和工具条
步骤1:新建工程,以自己的学号命名:如。
在建好的java project里,新建可视化类mainFrame,继承自swing包中的JFrame类,窗口自带内容面板名称为“jContentPane”,将窗口的标题改为“主窗体”,修改窗口的属性,将“visiable”属性改为“true”;
步骤2:修改jContentPane,将其“layout”属性改为“null”;
步骤3:下面开始制作菜单,打开可视化编辑区域右侧浮动的组件面板“Palette”,添加菜单条,在“swing menus”页中选中JMenuBar,单击拖动到“mainFrame”,将其命名为“jJMenuBar”;
注意:也可以在“java beans”页面,选中“this-“主窗体”,再进行拖动。
步骤4:打开可视化编辑区域右侧浮动的组件面板“Palette”,添加菜单,在“swing menus”页中选中JMenu,单击拖动到“jJMenuBar”,将其命名为“jMenu1”;修改“jMenu1”的“text”属性为“文件”。
步骤5:打开可视化编辑区域右侧浮动的组件面板“Palette”,添加菜单项,在“swing menus”页中选中JMenuItem,单击拖动到“jMenu1”,将其命名为“jMenuItem1”;修改“jMenuItem1”的“text”属性为“新建”。
步骤6:重复步骤5的操作,新建菜单项“jMenuItem2”;修改“jMenuItem2”的“text”属性为“保存”。
步骤7:重复步骤5的操作,新建菜单项“jMenuItem3”;修改“jMenuItem3”的“text”属性为“退出”。
步骤8:打开可视化编辑区域右侧浮动的组件面板“Palette”,添加工具栏,在“swing menus”页中选中JToolBar,单击拖动到“jContentPane”,将其命名为“jJToolBarBar”;在可视化编辑区合理调整工具条的大小;
步骤9:打开可视化编辑区域右侧浮动的组件面板“Palette”,添加工具栏里面的按钮,在“Swing Components”页中选中JButton,单击拖动到“jJToolBarBar”,将其命名为“jButton1”;修改“jButton1”的“icon”属性,给按钮添加一幅图片;可以从工程目录里添加,也可以从本地硬盘的某个位置添加;
步骤10:重复步骤9,再给工具条添加一个按钮;
步骤11:给菜单项“退出”添加事件处理代码;在Eclipse工作台的左下角“java bean”页面中选中“退出”菜单项,单击右键,在弹出的快捷菜单中选中“Event”,在弹出的二级菜单中选中“action performed”单击,此时编译环境自动生成了“退出”菜单项的动作事件处理代码框架如下:
jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
}
});
在方法体里添加如下:
System.exit(0);
步骤12:重复步骤11,也可以给工具栏中的某个按钮添加事件处理。