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