将参数设置为在菜单操作中起作用

2024-04-27 01:03:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样的想法:

class Main(QWidget):
    def __init__(self):
        super().__init__()

    def init_gui(self):
        self.layout = QGridLayout()
        self.setLayout(self.layout)
        self.button_sett()
        self.show()
    def button_sett(self):
        button = QPushButton()
        menu = QMenu()
        menu.addAction("Settings", self.switch_page) 
        menu.addAction("About", self.switch_page)
        button.setMenu(menu)

我能告诉函数一个动作的textContent

像这样:

def switch_page():
    if textContent == "Settings":
    .......

有更好的办法吗?我不想编写像switch_page_to_settingsswitch_page_to_about这样的函数,因为我在按钮上有更多的操作


Tags: to函数selfsettingsinitdefpagebutton
1条回答
网友
1楼 · 发布于 2024-04-27 01:03:52
def button_sett(self):
    button = QPushButton()
    menu = QMenu()

    def action(title):
        menu.addAction(title, lambda: self.switch_page(title))

    action("Settings")
    action("About")

    button.setMenu(menu)

def switch_page(self, title):
    if title == "Settings":
        pass  # TODO

λ等于:

    def action(title):
        def switch():
            self.switch_page(title)

        menu.addAction(title, switch)

相关问题 更多 >