我有一個使用Python 2.7和QT 4.7的PyQt GUI,可以打開一個由按鈕調用的對話框。我可以在對話框和主GUI之間傳遞值,但大部分情況都很好,直到它出現在對話框中的QSpinBox中。PyQt SpinBox總是返回0,除非先前用setValue設置
定義對話框類是像這樣:
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中的方法wraping self.ui.buySpinBox.value()?和'qtyToBuy = self.ui.buySpinBox.value()'行一樣在哪裏執行? –