微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python:将条目添加到PyQt5菜单栏列表

如何解决Python:将条目添加到PyQt5菜单栏列表

我希望在PyQt5菜单栏中设置带有字符串列表的条目;列表可以更改。

从Qt Designer ui到py文件的硬编码,我有

strList = ["1","2","3","4" ]

self.action1 = QtWidgets.QAction(MainWindow)
self.action1.setobjectName("action1")
self.action2 = QtWidgets.QAction(MainWindow)
self.action2.setobjectName("action2")
self.action3 = QtWidgets.QAction(MainWindow)
self.action3.setobjectName("action3")
self.action4 = QtWidgets.QAction(MainWindow)
self.action4.setobjectName("action4")
self.menuBoards.addAction(self.action1)
self.menuBoards.addAction(self.action2)
self.menuBoards.addAction(self.action3)
self.menuBoards.addAction(self.action4)
self.menubar.addAction(self.menuBoards.menuAction())

不知道如何动态设置self.action,只是它应该像枚举循环一样,但不确定如何从ui(现在为py)文件返回MainWindow。

在主程序中,我认为...

import messageScriptUi
#lines later
for ix,name in enumerate(strList):
    setattr(self,name,QtWidgets.QAction(MainWindow) )
    #-------------help here?-------------------
    self.menuBoards.addAction(self.action1)
    #------------------------------------------
self.menubar.addAction(self.menuBoards.menuAction()) 

messageScriptUi文件的前几行是:

from PyQt5 import QtCore,QtGui,QtWidgets
from PyQt5.QtWidgets import QWidget,QMainWindow

class Ui_Form(QWidget):
# Start code to copy
def __init__(self,parent):
    super(self.__class__,self).__init__()
    self.parent = parent
    self.setupUi(parent)
    
def setCentralWidget(self,something):
    pass

def setupUi(self,MainWindow):
    MainWindow.setobjectName("MainWindow")

解决方法

如果问题是关于动态创建操作,那么您就使用setattr了。

for name in strList:
    action = QtWidgets.QAction(MainWindow)
    setattr(self,'action{}'.format(name),action)
    self.menuBoards.addAction(action)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。