python - 将操作连接到按钮上的菜单项/操作?
问题描述
我想制作自己的菜单栏。我找到了一种向 QPushButton 添加操作的方法:
来源:https ://www.youtube.com/watch?v=Aj-Q8pu_HG0
def add_menu(data,menu_obj):
if isinstance(data,dict):
for k,v in data.items():
sub_menu = QtWidgets.QMenu(k,menu_obj)
menu_obj.addMenu(sub_menu)
add_menu(v,sub_menu)
elif isinstance(data,list):
for element in data:
add_menu(element,menu_obj)
else:
print(data)
action = menu_obj.addAction(data)
#action.setIconVisibleInMenu(False)
if action == "load":
action.triggered.connect(lambda : print("load"))
elif action == "new":
action.triggered.connect(lambda : print("new"))
elif action == "save":
action.triggered.connect(lambda : print("save"))
file_menu = [
"new","load","save"
]
menu = QtWidgets.QMenu()
menu.setStyleSheet(menu_style)
self.pushButton_file.setMenu(menu)
add_menu(file_menu,menu)
但是,我无法为特定项目添加功能。理想情况下,我能做的是:
self.menuitem_new.triggered.connect(lambda:print("NEW")).
那可能吗 ?
解决方案
推荐阅读
- javascript - 不同原型继承方式的区别
- reactjs - 如何从 REST Api 响应组成 graphQL 查询?
- javascript - 加载外部 JS 并在同步后立即运行脚本
- sml - 遍历 SML 中的列表
- c# - 使用 texbox 控件插入数字时 ASP.NET 挂起
- javascript - 不知道计数器在javascript中的作用是什么
- javascript - 如何在 Phaser 3 中实现滑动?
- ios - 从 CLPlacemark 获取企业名称
- python - 如何使用 matplotlib 绘制不同长度的熊猫系列?
- php - 无法在 ubuntu 18.04、php 5.6 apache2 中访问 phpmyadmin