저는 푸시 버튼이라는 대화 상자를 여는 Python 2.7 및 QT 4.7을 사용하는 PyQt GUI를 사용합니다. 대화 상자의 QSpinBox에 올 때까지 대화 상자와 주 GUI 사이의 값을 대부분 잘 전달할 수 있습니다.이전에 setValue로 설정하지 않은 한 PyQt SpinBox는 항상 0을 반환합니다.
대화 상자를 정의하는 클래스는 그래서 같다 :
class BuyDialog(QDialog):
def __init__(self):
QDialog.__init__(self)
global ci, space, cash, current, price, qtyToBuy
self.ui = Ui_buyDialog() # Set up the user interface from Designer.
self.ui.setupUi(self)
for i in range(0, len(ci)):
item = str(ci[i][0])
price = str(ci[i][1])
self.ui.itemsComboBox.addItem(item)
price = str(self.getPrice())
gPrice = "$" + price
print gPrice
self.ui.priceFieldLabel.setText(gPrice)
self.ui.itemsComboBox.currentIndexChanged['QString'].connect(self.updateItems)
self.ui.availableSpaceFieldLabel.setText(space)
canBuy = str(funcs.youCanAfford(cash, price))
self.ui.canAffordFieldLabel.setText(canBuy)
qtyToBuy = self.ui.buySpinBox.value()
대화 자체가
def buyDialog(self):
global current, price, qtyToBuy
dialog = BuyDialog()
result = dialog.exec_()
if result:
dialogResult = (current, price, qtyToBuy)
print dialogResult #debug
return dialogResult
current
price
은에서 온다
current
에 대한 목록 조회.
current
및
price
에 대해 반환 된 값이 정확하므로 대화 상자가 올바르게 업데이트됩니다. 그러나
qtyToBuy
은 항상 0을 반환합니다. 다른 값을 반환하는 유일한 방법은 초기화시
setValue()
을 호출하는 것입니다. 내가 본 모든 곳에서 나는이 문제에 관해서 다른 것을 찾을 수 없으므로 나는이 문제를 가진 유일한 사람이라는 인상을 받는다. 누구든지 문제가 뭔지 알 수 있습니까?
스핀 상자의 'value()'를 가져와 사용하는 실제 코드 순서를 보여주십시오. – qurban
현재 유일한 출력물은'print dialogResult'입니다. 커맨드 라인으로 출력하여 디버깅하고 있습니다. 필자는 Python/PyQt에 대해 잘 모르기 때문에 천천히 가고 데이터가 올바르게 반환되는지 확인하기 전에 다른 곳에서는 사용하지 않을 것입니다. – Bendustries
BuyDialog의 메소드 대신 전역 변수를 사용하는 이유 self.ui.buySpinBox.value()? 그리고 정확히'qtyToBuy = self.ui.buySpinBox.value()'행이 실행됩니까? –