python - pyFLTK 菜单栏中是否可以有图标?
问题描述
如何在 pyFLTK 中制作这些图标?
我的代码:
from fltk import *
def exitcb(widget,v):
w.hide()
def demo1cb(widget,v):
fl_message("this is the Test1 callback")
def demo2cb(widget,v):
fl_message("this is the Test2 callback")
w = Fl_Window(600, 50, 300, 400, "Menus with icons")
w.begin()
menu=Fl_Menu_Bar(0,0,300,25)
menu.add("File/Exit", FL_F + 5, exitcb, 0,0)
menu.add("File/Open/Test1",FL_F + 6, demo1cb,0,0)
menu.add("File/Open/Test2",FL_F + 7, demo2cb,0,0)
Fl_Check_Button(10, 30, 40, 20, 'GG')
w.end()
w.show()
Fl.run()
解决方案
抱歉,这比预期花费的时间要长一些。简而言之,当前版本的 pyFltk 无法做到这一点。不过,如果你愿意再等一会儿,也就是等到 pyFltk-1.3.6 的发布,那么我们会支持这个功能。将再次有一个名为“menu_label.py”的测试文件,显示该功能的使用情况。基本上,您需要做的是:
def addItemToMenu(menu, # menu to add item to
labeltext, # label text
shortcut, # shortcut (e.g. FL_COMMAND+'a')
cb, # callback to invoke
userdata, # userdata for callback
pixmap, # image (if any) to add to item
flags=0 # menu flags (e.g. FL_MENU_DIVIDER..)
):
# Add a new menu item
i = menu.add(labeltext, shortcut, cb, userdata, flags)
item = menu.find_item(labeltext)
item.add_multi_label(pixmap)
当然,这必须嵌入到整体代码中,例如,像这样:
def createMenuItems(menu):
# Add items with LABELS AND IMAGES using Fl_Multi_Label..
addItemToMenu(menu, "File/New", FL_COMMAND | ord('n'), onMenu, "New", L_document_pixmap)
addItemToMenu(menu, "File/Open", FL_COMMAND | ord('o'), onMenu, "Open", L_folder_pixmap, FL_MENU_DIVIDER)
addItemToMenu(menu, "File/Quit", FL_COMMAND | ord('q'), onFileQuit, "Quit", L_redx_pixmap)
# Create menu bar items with JUST LABELS
menu.add("Edit/Copy", FL_COMMAND | ord('c'), onMenu, "Copy")
menu.add("Edit/Paste", FL_COMMAND | ord('v'), onMenu, "Paste")
i = menu.add("Images/One", 0, onMenu, "One");
item = menu.find_item("Images/One")
l_img = L_document_pixmap.copy()
item.image(L_document_pixmap.copy())
i = menu.add("Images/Two", 0, onMenu, "Two")
item = menu.find_item("Images/Two")
item.image(L_folder_pixmap.copy())
i = menu.add("Images/Three", 0, onMenu, "Three")
item = menu.find_item("Images/Three")
item.image(L_redx_pixmap.copy())enter code here
这基本上是 Albrecht Schlosser 的示例,转换为 Python。
目前,我们预计 pyFltk-1.3.6 会在大约两周后发布。
祝你好运
安德烈亚斯
推荐阅读
- reactjs - React intl 模板字符串抛出一个错过的 id 警告
- tfs - TFS 2018 和 AppCenter 测试
- yaml - Yaml : yaml 文件中的格式错误。预期的 '
',但发现' - single-sign-on - Apereo CAS分两步加载用户属性并存储起来进行属性发布
- reactjs - 我可以在这个常量中传递一个列表查询吗?
- python - 根据 leetcode 的“列表索引超出范围”。但在 IDLE 中工作
- android - 片段如何在内部接收应用程序的上下文(内部工作)
- asp.net-mvc - 模型字符串中的 href 导致 mvc 抛出 Failed to map the path 错误
- intellij-idea - 无法更改日期样式 intellij IDE
- user-interface - Pharo:魅力浏览器中的可伸缩面板。如何?