0

Python 2.7 と QT 4.7 を使用して、プッシュボタンで呼び出されるダイアログを開く PyQt GUI があります。ダイアログ ボックスの QSpinBox に到達するまでは、ダイアログ ボックスとメイン GUI の間で値を渡すことができます。

ダイアログを定義するクラスは次のようになります。

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に対するリスト ルックアップから取得されますcurrentcurrentとで返される値priceが正しいため、ダイアログが正しく更新されることはわかっています。ただし、qtyToBuy常に 0 を返します。異なるものを返す唯一の方法は、setValue()開始時に呼び出すことです。どこを見ても、この問題に関して他に何も見つからないので、この問題を抱えているのは私だけだという印象を受けます。誰が問題が何であるか知っていますか?

4

1 に答える 1