pyFLTK 菜单栏中是不是可以有图标?

Posted

技术标签:

【中文标题】pyFLTK 菜单栏中是不是可以有图标?【英文标题】:Is it possible to have icon in pyFLTK menubar?pyFLTK 菜单栏中是否可以有图标? 【发布时间】:2021-05-25 21:24:19 【问题描述】:

如何在 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 标签。 不幸的是,它不支持开箱即用。但是,Albrecht Schlosser 曾经在 C++ 中创建了一种方法,你可以在这里找到他使用 Fl_Multi_Label 的方法:github.com/fltk/fltk/blob/master/examples/… 如果你给我一些时间,我会看看我是否可以让它在 pyFltk 中也能工作。 哦,谢谢。慢慢来,我等你@Andreas 很好@Andreas 我也在等你。 【参考方案1】:

抱歉,这比预期花费的时间稍长。简而言之,当前版本的 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 会在大约两周后发布。

祝你好运

安德烈亚斯

【讨论】:

抱歉耽搁了,但我们现在已经发布了最新版本的pyFltk,它涵盖了上述问题。请访问sourceforge.net/projects/pyfltk 以获取该版本。

以上是关于pyFLTK 菜单栏中是不是可以有图标?的主要内容,如果未能解决你的问题,请参考以下文章

如何更改操作栏中的选项菜单图标?

如何更改菜单栏中的 Xamarin 后退按钮?

开始菜单图标全白了

在android操作栏中的菜单项之间显示分隔符

如何更改操作栏中下拉菜单的背景颜色

如何单击底部栏上的图标