Issue
I am trying to write a function to better manage QMessageBoxes for the program I am designing. It takes a number of parameters and creates a custom QMessageBox based on those parameters.
def alert(**kwargs):
# Initialization
msg = QMessageBox()
try:
# Conditioning for user selection of QMessageBox Properties
for key, value in kwargs.items():
key = key.lower()
# Set TitleBox value
if key == "title":
msg.setWindowTitle(value)
# Set TextBox value
elif key == "text":
msg.setText(value)
# Set Custom Buttons
elif key == "buttons":
buttons = value.split(',')
for x in range(len(buttons)):
msg.addButton(QPushButton(buttons[x]), QMessageBox.ActionRole)
msg.exec_()
except Exception as error:
print(error)
A simple form this function would be called will be like this:
alert(title="Some Title", text="Some Text", buttons="Yes,No,Restore,Config")
However, I am having trouble getting the value of the pressed button. I have tried the following solution but it did not fix my problem.
-
msg.buttonClicked.connect(someFunction)
This would pass the value of the button to a function, but I want to access the value of the clicked button in my alert() function.
Solution
You have to use the clickedButton() method that returns the pressed button.
import sys
from PyQt5.QtWidgets import QApplication, QMessageBox, QPushButton
def alert(**kwargs):
# Initialization
msg = QMessageBox()
for key, value in kwargs.items():
key = key.lower()
if key == "title":
msg.setWindowTitle(value)
elif key == "text":
msg.setText(value)
elif key == "buttons":
for text in value.split(","):
button = QPushButton(text.strip())
msg.addButton(button, QMessageBox.ActionRole)
msg.exec_()
button = msg.clickedButton()
if button is not None:
return button.text()
if __name__ == "__main__":
app = QApplication(sys.argv)
text = alert(title="Some Title", text="Some Text", buttons="Yes,No,Restore,Config")
print(text)
Answered By - eyllanesc
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.