问题描述
如何在 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,25)
menu.add("File/Exit",FL_F + 5,exitcb,0)
menu.add("File/Open/Test1",FL_F + 6,demo1cb,0)
menu.add("File/Open/Test2",FL_F + 7,demo2cb,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'),"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'),"Copy")
menu.add("Edit/Paste",FL_COMMAND | ord('v'),"Paste")
i = menu.add("Images/One","One");
item = menu.find_item("Images/One")
l_img = L_document_pixmap.copy()
item.image(L_document_pixmap.copy())
i = menu.add("Images/Two","Two")
item = menu.find_item("Images/Two")
item.image(L_folder_pixmap.copy())
i = menu.add("Images/Three","Three")
item = menu.find_item("Images/Three")
item.image(L_redx_pixmap.copy())enter code here
这基本上是 Albrecht Schlosser 的示例,转换为 Python。
目前,我们预计将在大约两周内发布 pyFltk-1.3.6。
祝你好运
安德烈亚斯