如何在不立即激活另一个功能的情况下从 QComboBox 存储和传递值?

How to store and pass value from QComboBox without immediate activation of another function?

如何使应用程序仅在用户按下按钮 'Strategy1' 后打印 'You clicked the button1 for currency XXX',而不是在 he/she 刚刚选择货币时打印?

这是我到目前为止所做的,但它会在用户从 QComboBox

中选择货币后立即打印 'You clicked ...'
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt

app = QApplication([])

def button1_clicked(curr_pair):
    alert = QMessageBox()
    alert.setText('You clicked the button1 for currency {}'.format(curr_pair))
    alert.exec_()

button1 = QPushButton('Strategy1')
button1.setToolTip('Click to run strategy 1')
button1.show()
button1.clicked.connect(button1_clicked)

combo = QComboBox()
combo.addItems(['', 'eur', 'usd', 'gbp'])
combo.show()
combo.activated[str].connect(button1_clicked)

window = QWidget()
layout = QVBoxLayout()

title1 = QLabel("Choose currency") 
title1.setAlignment(Qt.AlignCenter) 
title2 = QLabel("Push the button") 
title2.setAlignment(Qt.AlignCenter) 

layout.addWidget(title1)
layout.addWidget(combo)
layout.addWidget(title2)
layout.addWidget(button1)

window.setLayout(layout)
window.show()

app.exec_()

试一试:

from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt

app = QApplication([])

def button1_clicked(curr_pair):
    alert = QMessageBox()
    if curr_pair:
        alert.setText('You clicked the button1 for currency: `{}`'.format(curr_pair))
    else:
        alert.setText('You have pressed the button1 no currency is selected !!!')
    alert.exec_()

currencyName = QLabel("")                                              # <--- +++

button1 = QPushButton('Strategy1')
button1.setToolTip('Click to run strategy 1') 
button1.show()

#button1.clicked.connect(button1_clicked)
button1.clicked.connect(lambda : button1_clicked(currencyName.text())) # <--- +++

combo = QComboBox()
combo.addItems(['', 'eur', 'usd', 'gbp'])
combo.show()

#combo.activated[str].connect(button1_clicked)
combo.activated[str].connect(currencyName.setText)                      # <--- +++

window = QWidget()
layout = QVBoxLayout()

title1 = QLabel("Choose currency")      
title1.setAlignment(Qt.AlignCenter) 
title2 = QLabel("Push the button")      
title2.setAlignment(Qt.AlignCenter) 

layout.addWidget(title1)
layout.addWidget(combo)
layout.addWidget(title2)
layout.addWidget(button1)

window.setLayout(layout)
window.show()

app.exec_()