Установите параметр для функции в действии меню - PullRequest
0 голосов
/ 19 апреля 2019

У меня есть что-то вроде этого:

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_settings и switch_page_to_about, потому что у меня есть больше действий с кнопкой.

1 Ответ

0 голосов
/ 19 апреля 2019
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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...