lgob创建菜单栏_工具栏和状态栏
2012-11-13 06:56
309 查看
前面已经介绍了如何使用button,label,entry,这一章介绍lgob创建菜单栏_工具栏和状态栏.
如果你学过java会觉得gtk创建菜单栏很怪,如果没有,那恭喜你了.下面是创建菜单栏的过程
一 与菜单相关的部件有MenuBar, Menu,MenuItem.
MenuBar和Menu都是MenuItem的容器
但MenuBar不是Menu 的容器,Menu可以是MenuItem的子菜单
创建菜单的方法是
1. 使用gtk.MenuBar.new()创建菜单栏
2. 使用gtk.MenuItem.new()创建菜单项,其中顶层菜单也是菜单项的一种,使用menubar:append(topitem),把顶层菜单项添加到菜单栏中
3. 使用gtk.Menu.new()创建菜单项的容器,把非顶层菜单项使用menu:append(item)添加到Menu中
4. 使用menuitem:set_submenu(menu)把Menu添加到顶层菜单中
当然还有其他属性设置
当然理解后,你也可以修改顺序.
二 与工具栏相关的部件有Toolbar,ToolButton
1 使用gtk.Toolbar.new()创建工具栏
2 使用gtk.ToolButton.new_from_stock(stock) 或gtk.ToolItem.new()创建工具按钮
3 使用toobar:insert(button/item,index)把工具按钮添加到工具栏
当然还有其他属性设置,注意stock命名格式为原c格式GTK_STOCK_ABOUT,lgob格式 gtk-about,在devhelp里搜索Stock Items
可以查询所有stock
三与状态栏相关的部件有Statusbar
1 使用gtk.Statusbar.new()创建状态栏
2 使用stausbar.push(index,messaage)添加提示消息
具体请看截图和代码
图一
图二 图三
test.lua
gdkkey.lua
如果你学过java会觉得gtk创建菜单栏很怪,如果没有,那恭喜你了.下面是创建菜单栏的过程
一 与菜单相关的部件有MenuBar, Menu,MenuItem.
MenuBar和Menu都是MenuItem的容器
但MenuBar不是Menu 的容器,Menu可以是MenuItem的子菜单
创建菜单的方法是
1. 使用gtk.MenuBar.new()创建菜单栏
2. 使用gtk.MenuItem.new()创建菜单项,其中顶层菜单也是菜单项的一种,使用menubar:append(topitem),把顶层菜单项添加到菜单栏中
3. 使用gtk.Menu.new()创建菜单项的容器,把非顶层菜单项使用menu:append(item)添加到Menu中
4. 使用menuitem:set_submenu(menu)把Menu添加到顶层菜单中
当然还有其他属性设置
当然理解后,你也可以修改顺序.
二 与工具栏相关的部件有Toolbar,ToolButton
1 使用gtk.Toolbar.new()创建工具栏
2 使用gtk.ToolButton.new_from_stock(stock) 或gtk.ToolItem.new()创建工具按钮
3 使用toobar:insert(button/item,index)把工具按钮添加到工具栏
当然还有其他属性设置,注意stock命名格式为原c格式GTK_STOCK_ABOUT,lgob格式 gtk-about,在devhelp里搜索Stock Items
可以查询所有stock
三与状态栏相关的部件有Statusbar
1 使用gtk.Statusbar.new()创建状态栏
2 使用stausbar.push(index,messaage)添加提示消息
具体请看截图和代码
图一
图二 图三
test.lua
require('lgob.gtk') require('lgob.gdk')--键盘,图标等会用到gdk require('gdkkey') --lgob中没找到键盘的键值,这事我从c的头文件中得到的 --加载图标 如图三,会在任务栏显示 logo=gdk.Pixbuf.new_from_file("icon.png") window =gtk.Window.new(gtk.WINDOW_TOPLEVEL) window:set('title', "lgob测试", 'window-position', gtk.WIN_POS_CENTER) window:set('default-width',400,'default-height',300) window:set_icon(logo) window:connect('delete-event', gtk.main_quit) --菜单的创建 --1 创建菜单栏 menubar=gtk.MenuBar.new(); -- 2创建菜单项 --使用mnemonic可以使用alt+x快捷键x为_X中的第一个字母 file_item = gtk.MenuItem.new_with_mnemonic("_File") menubar:append(file_item)--顶层菜单 open_item=gtk.MenuItem.new_with_label("open") save_item = gtk.MenuItem.new_with_label("Save") autosave_item=gtk.CheckMenuItem.new_with_label("autosave") --带选择的菜单如图二 quit_item = gtk.ImageMenuItem.new_from_stock("gtk-quit") --从stock创建 --在devhelp中搜索stock items 可以看到各种stock,lgob的命名只是把"GTK_STOCK_XXX"换成了"gtk-xxx" --3 创建菜单 添加菜单项 filemenu=gtk.Menu.new() filemenu:append(open_item) filemenu:append(save_item) filemenu:append(autosave_item) filemenu:append(gtk.SeparatorMenuItem.new()) --分隔符 filemenu:append(quit_item) --4把menu添加到顶层菜单 file_item:set_submenu(filemenu) --菜单的信号是activate open_item:connect('activate',function() print("open") end) --匿名函数 quit_item:connect('activate',gtk.main_quit) --快捷键 accel = gtk.AccelGroup.new() open_item:add_accelerator('activate',accel,GDK.KEY_a,gdk.CONTROL_MASK,gtk.ACCEL_VISIBLE) --状态栏 statusbar = gtk.Statusbar.new() statusbar:push(1,"autosave info:".."not active") function setstatusbar() if (autosave_item:get_active()) then statusbar:push(1,"autosave info:".."active") else statusbar:push(1,"autosave info:".."not active") end end autosave_item:connect('activate',setstatusbar) --工具栏 toolbar= gtk.Toolbar.new() toolbar:set_style(gtk.TOOLBAR_ICONS) newtb = gtk.ToolButton.new_from_stock("gtk-new") opentb = gtk.ToolButton.new_from_stock("gtk-open") savetb = gtk.ToolButton.new_from_stock("gtk-save") sep = gtk.SeparatorToolItem.new() quittb = gtk.ToolButton.new_from_stock("gtk-quit") toolbar:insert(newtb, 0) toolbar:insert(opentb, 1) toolbar:insert(savetb, 2) toolbar:insert(sep, 3) toolbar:insert(quittb, 4) quittb:connect("clicked", gtk.main_quit) vbox = gtk.VBox.new(false, 5) vbox:pack_start(menubar, false, false, 0) vbox:pack_start(toolbar,false,false,0) vbox:pack_end(statusbar,false, false, 0) window:add(vbox) window:add_accel_group(accel) window:show_all() gtk.main()
gdkkey.lua
--GDK 键值从c #include <gdk/gdkkeysyms.h>中得到 GDK={} GDK["KEY_a"]=0x061 GDK["KEY_b"]=0x062 GDK["KEY_c"]=0x063 GDK["KEY_d"]=0x064 GDK["KEY_e"]=0x065 GDK["KEY_f"]=0x066 GDK["KEY_g"]=0x067 GDK["KEY_h"]=0x068 GDK["KEY_i"]=0x069 GDK["KEY_j"]=0x06a GDK["KEY_k"]=0x06b GDK["KEY_l"]=0x06c GDK["KEY_m"]=0x06d GDK["KEY_n"]=0x06e GDK["KEY_o"]=0x06f GDK["KEY_p"]=0x070 GDK["KEY_q"]=0x071 GDK["KEY_r"]=0x072 GDK["KEY_s"]=0x073 GDK["KEY_t"]=0x074 GDK["KEY_u"]=0x075 GDK["KEY_v"]=0x076 GDK["KEY_w"]=0x077 GDK["KEY_x"]=0x078 GDK["KEY_y"]=0x079 GDK["KEY_z"]=0x07a
相关文章推荐
- MFC基于对话框的菜单栏,工具栏和状态栏的创建
- PyQt5学习第一发(基础窗口创建 菜单栏 工具栏 状态栏 )
- Qt 第三章 创建主窗口--子类化QMainWindow、菜单栏、工具栏、状态栏 推荐
- QT学习笔记05QMainWindow(菜单栏+工具栏+状态栏+浮动窗口)
- Qt mainWindow添加状态栏,菜单栏,工具栏的Action方法
- PyQt5_例1(图标、状态栏、菜单栏、工具栏)
- 工具栏、状态栏创建
- 在Windows应用程序中设计菜单栏、工具栏和状态栏
- 工具栏、状态栏创建代码
- PyQt5教程-07-菜单栏、工具栏、状态栏
- 使用C#创建自定义背景色/形状的菜单栏与工具栏
- Qt中实现简单的菜单栏,工具栏和状态栏!
- 使用C#创建自定义背景色/形状的菜单栏与工具栏
- JavaSwing实现完整的菜单栏、工具栏和状态栏的GUI窗口
- QT5 学习之路16---菜单栏、工具栏和状态栏
- 在mfc中,如何设置一个隐藏菜单栏,工具栏,状态栏,最大化、最小化、关闭按钮的窗体 分类: MFC
- MFC框体添加菜单栏工具栏状态栏
- MFC复习和学习 第三章 MFC工具栏 MFC 状态栏 MFC视图创建
- PyQt4 菜单栏 + 工具栏 + 状态栏 + 中心部件 生成一个文本编辑部件示例
- 简单win32窗体框架创建部分源码(包括工具栏,状态栏)