Как добавить роли пользовательских кнопок в пользовательские кнопки в QMessageBox

Я хочу создать графический интерфейс Python с помощью виджета QMessageBox с настраиваемыми кнопками и ролями настраиваемой кнопки. Я создал настраиваемые кнопки, но как добавить пользовательскую роль к кнопке при ее нажатии. Виджет имеет стандартные роли кнопок, но я хочу определить пользовательские функции нажатия кнопок.

Пожалуйста, помогите мне с правильным синтаксисом кода.

Ниже мой код:

import sys
from PyQt4 import QtGui,QtCore

class MYGUI(QtGui.QWidget):

    def __init__(self):
        super(MYGUI,self).__init__()

        self.setWindowTitle("GUI")

        #widgets:

        self.labl=QtGui.QLabel(self)    
        self.labl.setFont(QtGui.QFont('Calibri', 34))


        #Layout:

        Layout =QtGui.QVBoxLayout()
        Layout.addWidget(self.labl)
        Layout.addStretch()
        self.setLayout(Layout)

        #Actions:                


        Queries={'Q1':'question 1','Q2':'question2'}

        for k,val in Queries.items():

            self.Choice=QtGui.QMessageBox()
            self.Choice.setIcon(QtGui.QMessageBox.Question)
            self.Choice.setWindowTitle(k)
            self.Choice.setText(val)
            self.Choice.addButton(QtGui.QPushButton('BT1',self))
            self.Choice.addButton(QtGui.QPushButton('BT2',self))
            self.Choice.addButton(QtGui.QPushButton('BT3',self))

            self.Choice.exec_()                   

        self.show()


def main():

    app=QtGui.QApplication(sys.argv)
    GUI=MYGUI()

    sys.exit(app.exec_())


main()

person pavan sunder    schedule 24.05.2017    source источник
comment
Вы хотите создать пользовательские роли, какие роли; Или то, что вы хотите, это выполнить конкретную задачу?   -  person eyllanesc    schedule 24.05.2017
comment
Да выполнить задачу, указанную в пользовательской функции   -  person pavan sunder    schedule 24.05.2017
comment
Например, когда нажимается кнопка, вызывается подключенная функция (определяемая пользователем).   -  person pavan sunder    schedule 24.05.2017


Ответы (1)


Вы должны использовать сигнал buttonClicked, это дает вам кнопку, которая излучает сигнал-

    self.Choice.addButton('BT1', QtGui.QMessageBox.YesRole)
    self.Choice.addButton('BT2', QtGui.QMessageBox.YesRole)
    self.Choice.addButton('BT3', QtGui.QMessageBox.YesRole)
    self.Choice.buttonClicked.connect(self.onClicked)
    self.Choice.exec_()

def onClicked(self, btn):
        print(btn.text())
person eyllanesc    schedule 24.05.2017